This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pb push_back
const int N=2e5+5;
int bit[N];
int arr[N];
int n,q;
vector<int>ans;
void update(int idx, int val){
if(idx==0)return;
while(idx<N){
bit[idx]+=val;
idx+= idx & -idx;
}
}
int find(int idx){
if(idx==0)return 0;
int s=0;
while(idx>0){
s+=bit[idx];
idx-= idx & -idx;
}
return s;
}
int findpos(int h){
int lo=1;
int hi=n+1;
while(hi>=lo){
int mid=(hi+lo)/2;
if(find(mid)+arr[mid]<h){
lo=mid+1;
}
else{
hi=mid-1;
}
}
return lo;
}
signed main(){
vector<int>v;
cin>>n>>q;
for(int i=1;i<=n;i++){
int a;
cin>>a;
v.pb(a);
}
sort(v.begin(),v.end());
for(int i=1;i<=n;i++){
arr[i]=v[i-1];
}
arr[n+1]=2e9;
cout<<endl;
while(q--){
char c;
cin>>c;
if(c=='F'){
int x,h;
cin>>x>>h;
int lo=findpos(h);
if(n-lo+1<=x){
update(lo,1);
continue;
}
int r= lo+x-1;
int p=find(r)+arr[r];
int z=findpos(p);
update(lo,1);
update(z,-1);
int cnt=r-z+1;
int y=findpos(p+1)-1;
int t=max(1LL,y-cnt+1);
update(t,1);
update(y+1,-1);
continue;
for(int i=1;i<=n;i++){
cout<<arr[i]+find(i)<<" ";
}
cout<<endl;
cout<<p<<" "<<z-1<<" "<<t<<" "<<y<<endl;
}
else{
int l,r ;
cin>>l>>r;
int y=findpos(r+1);
int x=findpos(l);
cout<<y<<" "<<x<<endl;
ans.pb(y-x);
}
}
for(auto a:ans)cout<<a<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |