Cod sursa(job #338257)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 5 august 2009 14:35:45
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<fstream>
#define p 500009 
using namespace std;
struct Nod
{int key;
Nod *urm;
       
       }nod;
      Nod  *h[500009],*q,*aux,*s;
       int n,x,m;
       
void add(int val)
{m=val%p;
for(Nod *i=h[m];i;i=i->urm)
 if(i->key==m) {return;}
q=new Nod ;
q->key=val;
q->urm=h[m];
h[m]=q;
}

void hdelete(int val)
{m=val%p;
s=new Nod;q=new Nod;
aux=new Nod;aux=NULL;
for(Nod *i=h[m];i;i=i->urm)
     {if(i->key==val ) {aux=i;continue;}}
if(aux) {aux->key=h[m]->key;
aux=h[m];;
h[m]=h[m]->urm;
delete aux;

return ;}    

   
     }
     
int search(int val)
{m=val%p;
for(Nod *i=h[m];i;i=i->urm)
if(i->key==val) return 1;
 return 0;
}     


int main()
{freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
int t,cerinta,x;
scanf("%d",&t);
for(;t;t--)
{scanf("%d",&cerinta);
switch(cerinta)
{case 1:{scanf("%d",&x);add(x);break;}
 case 2:{scanf("%d",&x); hdelete(x);break;}              
 case 3:{scanf("%d",&x);printf("%d \n",search(x));break;}   
 default :break;           }
           
           }
    
    
    return 0;
    
    }