Pagini recente » Borderou de evaluare (job #1570227) | Cod sursa (job #2905570) | Cod sursa (job #3248194) | Cod sursa (job #2468101) | Cod sursa (job #292156)
Cod sursa(job #292156)
#include<cstdio>
#include<vector>
#include<math.h>
#define modulo 671323
using namespace std;
vector<int> mancare[modulo];
int n;
float A=(sqrt(5)-1)/2;
int func(int x){
float m=A*(float)x;
int i=floor(m);
float frac=m-float(i);
return floor(modulo*frac);
}
void add(int x){
int k=func(x);
mancare[k].push_back(x);
}
void erase(int x){
int i,k,st;
k=func(x);
st=mancare[k].size();
for(i=0;i<st;i++){
if(mancare[k][i]==x){
mancare[k][i]=mancare[k][st-1];
mancare[k].pop_back();
}
}
}
bool check(int x){
int i,k,st;
k=func(x);
st=mancare[k].size();
for(i=0;i<st;i++){
if(mancare[k][i]==x){
return 1;
}
}
return 0;
}
int main(){
int x,y;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
for(;n--;){
scanf("%d %d",&x,&y);
if(x==1) add(y);
if(x==2) erase(y);
if(x==3) printf("%d\n",check(y));
}
return 0;
}