CSP-J 2021 复赛题
分糖果
#include<bits/stdc++.h>
using namespace std;int main()
{long long n,l,r;cin>>n>>l>>r;if(l/n==r/n){cout<<r%n<<endl;}else {cout<<n-1<<endl;}return 0;
}
插入排序
#include<bits/stdc++.h>
using namespace std;
struct nd{int v;int p;
};
nd a[8080];
int n,t;
int main()
{cin>>n>>t;for(int i=1;i<=n;i++){cin>>a[i].v;a[i].p=i;}while(t--){int op,x,v;cin>>op;if(op==1){cin>>x>>v;a[x].v=v;break;}else{cin>>x;int _left=0;int _right=0;for(int i=1;i<x;i++){if(a[i].v>a[x].v) _left++;}for(int i=x+1;i<=n;i++){if(a[i].v<a[x].v) _right++;}cout<<x-_left+_right<<endl;}}return 0;
}
网络连接
小熊的果篮
#include <iostream>
using namespace std;int a[200100];
int ans[200100], len;
int L[200100], R[200100];
int main(){int n;cin>>n;a[0] = a[n + 1] = -1;R[0] = 1; L[n + 1] = n;for (int i = 1; i <= n; ++i){cin>>a[i];L[i] = i - 1;R[i] = i + 1;if (a[i] != a[i - 1]){ans[len++] = i;}}while (len){int new_len = 0;for (int i = 0; i < len; ++i){printf("%d ", ans[i]);int l = L[ans[i]];int r = R[ans[i]];L[r] = l;R[l] = r; if (a[r] != -1 && a[ans[i]] == a[r] && a[r] != a[l]){ans[new_len++] = r;}}len = new_len;cout<<endl;}return 0;
}