#include<bits/stdc++.h>
#define lc (x<<1)
#define rc (x<<1|1)
#define ll long long
using namespace std;
inline char gc(){
static char now[1<<16],*S,*T;
if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;}
return *S++;
}
inline int read(){
int x=0,f=1;char ch=gc();
while(!isdigit(ch)) {if (ch=='-') f=-1;ch=gc();}
while(isdigit(ch)) x=x*10+ch-'0',ch=gc();
return x*f;
}
const int N=1e6+10;
const int g=30;
const int rt=1e6;
bool tag[N<<2][2];int len[N<<2][2],v[N<<2];
int n,t1,t2,t3,bin[33];
inline void pushdown(int x,int l,int r){
int mid=l+r>>1;
if (tag[x][0]){
tag[lc][0]=1;tag[lc][1]=0;v[lc]=v[rc]=0;len[lc][0]=mid-l+1;len[lc][1]=0;
tag[rc][0]=1;tag[rc][1]=0;len[rc][0]=r-mid;len[rc][1]=0;tag[x][0]=0;
}
if (tag[x][1]){
tag[lc][1]=1;tag[lc][0]=0;v[lc]=v[rc]=bin[30]-1;len[lc][1]=mid-l+1;len[lc][0]=0;
tag[rc][1]=1;tag[rc][0]=0;len[rc][1]=r-mid;len[rc][0]=0;tag[x][1]=0;
}
}
inline void update(int x,int l,int r){
int mid=l+r>>1;
len[x][0]=(len[lc][0]==mid-l+1?1:0)*len[rc][0]+len[lc][0];
len[x][1]=(len[lc][1]==mid-l+1?1:0)*len[rc][1]+len[lc][1];
}
inline void modify(int x,int l,int r,int l1,int r1,int op){
if(l1<=l&&r1>=r){
if (op==1) v[x]=bin[g]-1;else v[x]=0;
tag[x][op]=1;tag[x][op^1]=0;len[x][op]=r-l+1;len[x][op^1]=0;return;
}int mid=l+r>>1;pushdown(x,l,r);
if (l1<=mid) modify(lc,l,mid,l1,r1,op);
if (r1>mid) modify(rc,mid+1,r,l1,r1,op);update(x,l,r);
}
inline int insert1(int x,int l,int r,int p,int v1){
if (l==r){
v[x]+=v1;int flag=0;len[x][0]=len[x][1]=0;
if (v[x]>=bin[g]){flag=1;v[x]%=bin[g];}
if (v[x]<0){flag=-1;v[x]+=bin[g];}
if (v[x]==bin[g]-1) len[x][1]=1;if (!v[x]) len[x][0]=1;
return flag;
}int mid=l+r>>1;pushdown(x,l,r);int flag=0;
if(p<=mid) flag=insert1(lc,l,mid,p,v1);
else flag=insert1(rc,mid+1,r,p,v1);update(x,l,r);return flag;
}
inline int qr(int x,int l,int r,int p,int op){
if (l==r) return len[x][op];
int mid=l+r>>1;pushdown(x,l,r);
if (p>mid) return qr(rc,mid+1,r,p,op);
else{
int leno=qr(lc,l,mid,p,op);
if(leno==mid-p+1)
if (len[rc][op]==r-mid) return leno+r-mid;else return leno+len[rc][op];
else return leno;
}
}
inline int query(int x,int l,int r,int p){
if(l==r) return v[x];
int mid=l+r>>1;pushdown(x,l,r);
if (p<=mid) return query(lc,l,mid,p);
else return query(rc,mid+1,r,p);
}
inline void build(int x,int l,int r){
if (l==r) {len[x][0]=1;return;}
int mid=l+r>>1;build(lc,l,mid);
build(rc,mid+1,r);update(x,l,r);
}
int main(){
// freopen("a.in","r",stdin);
n=read();t1=read();t2=read();t3=read();
for (int i=0;i<=31;++i) bin[i]=1<<i;build(1,0,rt);
for (int owo=1;owo<=n;++owo){
int op=read();
if(op==1){
int a=read(),b=read();
int pos=b/g,st=b%g,fi;
if (a<0) {
a=-a;fi=a%bin[(g-1)-st+1],a>>=(g-1)-st+1;fi=-fi;a=-a;
}else fi=a%bin[(g-1)-st+1],a>>=(g-1)-st+1;
fi=fi*bin[st];a+=insert1(1,0,rt,pos,fi);
if (!a) continue;int flag=insert1(1,0,rt,pos+1,a);if(!flag) continue;
if (flag==1){
int len1=qr(1,0,rt,pos+2,1);if (len1>=1) modify(1,0,rt,pos+2,pos+2+len1-1,0);
insert1(1,0,rt,pos+2+len1,1);
}else{
int len0=qr(1,0,rt,pos+2,0);if (len0>=1) modify(1,0,rt,pos+2,pos+2+len0-1,1);
insert1(1,0,rt,pos+2+len0,-1);
}
}else{
int b=read(),pos=b/g,st=b%g;printf("%d\n",(query(1,0,rt,pos)&bin[st])?1:0);
}
}
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 5.103 ms | 16 MB + 52 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #2 | 5.137 ms | 16 MB + 52 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #3 | 5.63 ms | 16 MB + 76 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #4 | 5.924 ms | 16 MB + 84 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #5 | 8.113 ms | 16 MB + 164 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #6 | 7.645 ms | 16 MB + 176 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #7 | 10.23 ms | 16 MB + 292 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #8 | 9.841 ms | 16 MB + 176 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #9 | 22.545 ms | 16 MB + 564 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #10 | 35.485 ms | 16 MB + 800 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #11 | 35.872 ms | 16 MB + 240 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #12 | 32.476 ms | 16 MB + 1008 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #13 | 46.962 ms | 17 MB + 52 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #14 | 129.502 ms | 18 MB + 684 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #15 | 141.692 ms | 19 MB + 936 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #16 | 263.753 ms | 21 MB + 200 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #17 | 281.864 ms | 16 MB + 680 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #18 | 415.821 ms | 23 MB + 716 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #19 | 493.841 ms | 24 MB + 960 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #20 | 274.57 ms | 21 MB + 688 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #21 | 459.548 ms | 27 MB + 468 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #22 | 517.382 ms | 17 MB + 96 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #23 | 673.742 ms | 28 MB + 88 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #24 | 556.15 ms | 17 MB + 148 KB | Accepted | Score: 4 | 显示更多 |
| Testcase #25 | 712.233 ms | 28 MB + 696 KB | Accepted | Score: 4 | 显示更多 |