Cod sursa(job #743012)

Utilizator ion824Ion Ureche ion824 Data 2 mai 2012 19:37:23
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.92 kb
#include<cstdio>
#define MOD 666013
typedef struct lnod{
           int info;
           struct lnod *next;
           }*Nod;
Nod a[MOD+5];

void add(Nod &a,int x){
     Nod p;
     p = new lnod;
     p->info = x;
     p->next = a;
     a = p;
     }

bool find(int q){
     int x=q%MOD;
     Nod p;
     for(p=a[q%MOD];p;p=p->next)
       if(p->info==q)return 1;
     return 0;
     }     
     
void del(int q){
     int x=q%MOD;
     Nod p=a[x],r;
     while(p)
       if(p->info==q)
                     if(p==a[x])
                         if(p->next==NULL) 
                               { delete p; a[x]=NULL;  return ;}
                         else { a[x]=p->next; delete p; return ; } 
                       else
                       if(p==a[x]){
                                   a[x] = p->next;
                                   delete p;
                                   return ;
                                   }
                           else
                           {
                             r->next = p->next;
                             r = r->next;
                             delete p;  
                             return ;
                             }                                           
        else           
            { r=p; p=p->next; }                                      
     }     
     
int main(void){
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    int n,i,cod,x; 
    bool bo;
    scanf("%d",&n);
    for(i=1;i<=n%MOD;++i)a[i]=NULL;
    for(i=1;i<=n;++i){
            scanf("%d%d",&cod,&x); 
            if(cod==1 || cod==2){
                 bo=find(x);
                 if(!bo && cod==1)add(a[x%MOD],x);                 
                 if(bo && cod==2)del(x);                          
                      }
             else printf("%d\n",find(x));
             }     
 return 0;   
}