#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);
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);
}
else{
int l,r ;
cin>>l>>r;
int y=findpos(r+1);
int x=findpos(l);
ans.pb(y-x);
}
}
for(auto a:ans)cout<<a<<endl;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
112 ms |
5432 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
348 KB |
Output is correct |
2 |
Correct |
6 ms |
604 KB |
Output is correct |
3 |
Incorrect |
6 ms |
604 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
158 ms |
2576 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
159 ms |
2796 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
112 ms |
4760 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
105 ms |
4920 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
107 ms |
5056 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
162 ms |
5792 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
150 ms |
5568 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
226 ms |
6596 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |