Pagini recente » Cod sursa (job #398672) | Cod sursa (job #2444046) | Cod sursa (job #2752375) | Cod sursa (job #2620317) | Cod sursa (job #2106526)
#include <stdio.h>
#include <stdlib.h>
#define prim 666013
void insert(int ***v,int x,int **ap)
{ int i;
int loc=x%prim;
for(i=0;i<(*ap)[loc];i++)
if((*v)[loc][i]==x) return;
(*ap)[loc]++;
(*v)[loc]=realloc((*v)[loc],(*ap)[loc]*sizeof(int));
(*v)[loc][(*ap)[loc]-1]=x;
}
void del(int ***v,int x,int **ap)
{ int i,j;
int loc=x%prim,ok=0;
for(i=0;i<(*ap)[loc];i++)
if((*v)[loc][i]==x) {ok=1;break;}
if(ok==0) return;
if(ok==1)
(*v)[loc][i]=(*v)[loc][(*ap)[loc]-1];
(*v)[loc]=realloc((*v)[loc],((*ap)[loc]-1)*sizeof(int));
(*ap)[loc]--;
}
int search(int **v,int x,int *ap)
{ int i,j;
int loc=x%prim,ok=0;
for(i=0;i<ap[loc];i++)
if(v[loc][i]==x) {ok=1;break;}
return ok;
}
int main()
{ int n,op,x;
FILE *f=fopen("hashuri.in","r");
FILE *g=fopen("hashuri.out","w");
fscanf(f,"%d",&n);
int **v=(int**)malloc(prim*sizeof(int*));
int *ap=(int*)calloc(prim,sizeof(int));
int i;
for(i=0;i<n;i++)
{fscanf(f,"%d %d",&op,&x);
if(op==1) insert(&v,x,&ap);
if(op==2) del(&v,x,&ap);
if(op==3) fprintf(g,"%d\n",search(v,x,ap));
}
return 0;
}