Pagini recente » Cod sursa (job #1222219) | Cod sursa (job #2392672) | Cod sursa (job #2780109) | Cod sursa (job #1166279) | Cod sursa (job #573180)
Cod sursa(job #573180)
#include<cstdio>
#include<vector>
#include<cmath>
#define M 999961
#define P 999979
#define Q 999983
using namespace std;
size_t N;
size_t m[M],p[P],q[Q];
void adauga(size_t x){
size_t hashM=x%M+(int)sqrt((double)x);
size_t hashP=x%P+x/2;
size_t hashQ=x%Q;
if(!(m[hashM] && p[hashP] && q[hashQ]))
m[hashM]++,
p[hashP]++,
q[hashQ]++;
}
void sterge(size_t x){
size_t hashM=x%M+(int)sqrt((double)x);
size_t hashP=x%P+x/2;
size_t hashQ=x%Q;
if((m[hashM] && p[hashP] && q[hashQ]))
m[hashM]--,
p[hashP]--,
q[hashQ]--;
}
int main(){
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&N);
for(size_t i=1;i<=N;++i){
size_t tip,x;
scanf("%d%d",&tip,&x);
switch(tip){
case 1: adauga(x);
break;
case 2: sterge(x);
break;
case 3:
size_t hashM=x%M+(int)sqrt((double)x);
size_t hashP=x%P+x/2;
size_t hashQ=x%Q;
printf("%d\n",(m[hashM] && p[hashP] && q[hashQ]));
}
}
return 0;
}