Pagini recente » Cod sursa (job #1856530) | Cod sursa (job #1680039) | Cod sursa (job #55188) | Cod sursa (job #2740868) | Cod sursa (job #2661280)
#include <stdio.h>
#include <stdlib.h>
#define FUNCTIE 1000 ///Functia hash va fi %FUNCTIE
int h[FUNCTIE][100001]; ///Sunt sanse foarte mici sa fie mai mult de 100000 numere pe un rand
///Pe pozitia zero voi tine marime hashului pe acea valoare
void add(int x){
int i=x%FUNCTIE;
h[i][0]++;
h[i][h[i][0]]=x;
}
int exista(int x){
int j=1,i=x%FUNCTIE;
for (j=1;j<=h[i][0];j++)
if(h[i][j]==x)
return j;
return 0;
}
void sterge(int x){
int j,i=x%FUNCTIE;
j=exista(x);
if(j>0){
for(;j<h[i][0];j++)
h[i][j]=h[i][j+1];
h[i][0]--;
}
}
int main(){
int n,i,x,o;
FILE *fin, *fout;
fin=fopen("hashuri.in","r");
fout=fopen("hashuri.out","w");
fscanf(fin,"%d",&n);
for(i=0;i<n;i++){
fscanf(fin,"%d%d",&o,&x);
if(o==1)
add(x);
else if(o==2)
sterge(x);
else{
if(exista(x)>0)
fprintf(fout,"1\n");
else
fprintf(fout,"0\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}