CF1913C
题意:给定一个空集合,并进行
对所有数进行二进制拆分,将集合中每个数的每一位存到数组
询问时我们从第
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int n,op,x,d[N],p[N];
int main(){
scanf("%d",&n);
while(n--){
scanf("%d%d",&op,&x);
if(op==1)d[x]++;
else{
int flag=0;
for(int i=0;i<=30;i++)p[i]=d[i];
for(int i=0;i<=30;i++){
if((x>>i)&1){
if(!p[i]){
flag=1;
break;
}
else p[i]--;
}
p[i+1]+=p[i]/2;
}
if(flag)puts("NO");
else puts("YES");
}
}
return 0;
}