Pagini recente » Cod sursa (job #1773108) | Cod sursa (job #1283550) | Cod sursa (job #1691949) | Cod sursa (job #694042) | Cod sursa (job #1370554)
#include <iostream>
#include <stdio.h>
using namespace std;
const int k=666269;
const int N=1001337;
int val[N],urm[N],lst[N],nr,n,p;
void adauga(int x){
int r=x&(k-1);
val[++nr]=x;
urm[nr]=lst[r];
lst[r]=nr;
}
void sterge(int x){
int r=x%k;
p=lst[r];
if(x==val[p]){
lst[r]=urm[p];
return;
}
while(urm[p]!=0&&val[urm[p]]!=x){
p=urm[p];
}
if(urm[p]!=0) urm[p]=urm[urm[p]];
}
bool cauta(int x){
int r=x%k;
p=lst[r];
while(p!=0){
if(val[p]==x) return 1;
p=urm[p];
}
return 0;
}
void citire(){
FILE *in, * out;
int a,b;
in=fopen("hashuri.in","r");
fscanf(in,"%d", &n);
out=fopen("hashuri.out","w");
for(int i=1;i<=n;i++){
fscanf(in,"%d%d",&a,&b);
if(a==1) adauga(b);
if(a==2) sterge(b);
if(a==3) fprintf(out,"%d\n",cauta(b));
}
}
int main()
{
citire();
return 0;
}