```cpp
/*
Author: EnderDeer
Online Judge: Luogu
*/
#include<bits/stdc++.h>
#define int long long
#define mem(x) memset(x,0,sizeof(x))
using namespace std;
int read(){
int s = 0,w = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-')w = -1;ch = getchar();}
while(ch >= '0' && ch <= '9')s = s * 10 + ch - '0',ch = getchar();
return s * w;
}
mt19937 rnd(time(0));
struct node{
int l;
int r;
int w;
int key;
int siz;
}e[300010];
int cnt,rt;
int tot;
int lazy;
int ans;
int newnode(int w){
cnt ++;
e[cnt].w = w;
e[cnt].key = rnd();
e[cnt].siz = 1;
return cnt;
}
void update(int i){
e[i].siz = e[e[i].l].siz + e[e[i].r].siz + 1;
}
void split(int i,int w,int &x,int &y){
if(!i){
x = y = 0;
return ;
}
if(e[i].w <= w){
x = i;
split(e[i].r,w,e[i].r,y);
}
else {
y = i;
split(e[i].l,w,x,e[i].l);
}
update(i);
}
int merge(int x,int y){
if(!x || !y)return x + y;
if(e[x].key > e[y].key){
e[x].r = merge(e[x].r,y);
update(x);
return x;
}
else {
e[y].l = merge(x,e[y].l);
update(y);
return y;
}
}
int x,y,z;
void ins(int w){
tot ++;
split(rt,w,x,y);
rt = merge(merge(x,newnode(w)),y);
}
void del(int w){
tot --;
split(rt,w,x,z);
split(x,w - 1,x,y);
y = merge(e[y].l,e[y].r);
rt = merge(merge(x,y),z);
}
int getnum(int rk){
int now = rt;
while(now){
if(e[e[now].l].siz + 1 == rk)break;
else if(e[e[now].l].siz >= rk)now = e[now].l;
else {
rk -= e[e[now].l].siz + 1;
now = e[now].r;
}
}
return e[now].w;
}
int n,minn;
void pushdown(int x){
e[x].w += lazy;
if(e[x].w < minn){
del(e[x].w);
ans ++;
}
if(e[x].l)pushdown(e[x].l);
if(e[x].r)pushdown(e[x].r);
}
signed main(){
cin>>n>>minn;
for(int i = 1;i <= n;i ++){
char op;
int k;
scanf(" %c ",&op);
k = read();
if(op == 'I'){
if(k < minn)continue;
else {
ins(k);
pushdown(rt);
lazy = 0;
}
}
else if(op == 'A'){
lazy += k;
}
else if(op == 'S'){
lazy -= k;
}
else {
pushdown(rt);
if(k > tot)puts("-1");
else printf("%lld\n",getnum(k));
}
}
cout<<ans;
return 0;
}
```
by EDqwq @ 2021-02-22 11:02:15
检查数组越界
by AzusaCat @ 2021-02-22 11:05:23
@[林深时x见鹿](/user/294562)
检查数组越界和函数内变量初值
by Retired_lvmao @ 2021-02-22 11:19:24
~~显然没有全局变量的数不赋值就会rand~~
by 听取MLE声一片 @ 2021-02-22 11:20:00
@[林深时x见鹿](/user/294562) 你treap写挂了,因为每次随机种子不一样所以挂的不一样,把time(0)删掉就不输出随机数了
by gxy001 @ 2021-02-22 11:23:06
@[林深时x见鹿](/user/294562) 显然平衡树写挂了呗,毕竟fhq是需要 rand的
by Leap_Frog @ 2021-02-22 11:23:56
好的,谢谢大家
by EDqwq @ 2021-02-22 11:58:17