标签:rand cti == ffffff define class font turn include
不会写红论文qwq
#include<cstdio> #include<cmath> #include<ctime> #include<cstdlib> #include<cstring> #include<algorithm> #define ls tr[x].ch[0] #define rs tr[x].ch[1] #define ds tr[x].ch[d] #define reg register #define inf 0x6fffffff #define F(i,a,b) for(i=a;i<=b;++i) using namespace std; int cnt,rt,line,MIN; struct TREAP{ int ch[2],w,siz,cnt,rd; }tr[1000005]; void up(int x) { tr[x].siz=tr[ls].siz+tr[rs].siz+tr[x].cnt; } void rot(int &x,int d) { int son=ds; ds=tr[son].ch[d^1]; tr[son].ch[d^1]=x; up(x); up(x=son); } void in(int &x,int w) { if(!x) { x=++cnt; // tr[x].siz=tr[x].cnt=1; tr[x].w=w; tr[x].rd=rand(); return; } tr[x].siz++; if(tr[x].w==w){ tr[x].cnt++;return; } int d=w>tr[x].w; in(ds,w); if(tr[x].rd>tr[ds].rd) rot(x,d); } void del(int &x,int w) { if(!x) return; if(tr[x].w==w) { if(tr[x].cnt>1) { tr[x].cnt--; tr[x].siz--; return; } int d=tr[ls].rd>tr[rs].rd; if(ls==0||rs==0) x=ls+rs; else rot(x,d),del(x,w); } else tr[x].siz--,del(tr[x].ch[tr[x].w<w],w); } void dfs(int x) { if(ls) dfs(ls); if(rs) dfs(rs); if(MIN+line>tr[x].w) { int t=tr[x].cnt; // while(t--) del(rt,tr[x].w); } } int kth(int x,int k) { while(x) { if(k<=tr[ls].siz) x=ls; else if(k>tr[x].cnt+tr[ls].siz) k-=tr[x].cnt+tr[ls].siz,x=rs; else return tr[x].w; } } int main() { char s[5]; srand(time(0)); int n; scanf("%d%d",&n,&MIN); reg int x,num=0; while(n--) { scanf("%s %d",s,&x); if(s[0]==‘I‘) { if(x>=MIN) in(rt,x+line),++num; } else if(s[0]==‘A‘) line-=x; else if(s[0]==‘S‘) { line+=x; dfs(rt); } else { if(tr[rt].siz<x) printf("-1\n"); else printf("%d\n",kth(rt,tr[rt].siz-x+1)-line); } } printf("%d",num-tr[rt].siz); return 0; }
标签:rand cti == ffffff define class font turn include
原文地址:https://www.cnblogs.com/hzoi-yzh/p/10986451.html