Cod sursa(job #385263)

Utilizator MarquiseMarquise Marquise Data 22 ianuarie 2010 14:31:40
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include <stdio.h>
#include <string.h>
#define MODULO 666012

int n;

struct nod
{
       int info;
       nod *next;
};
nod *v[MODULO];

int cauta(int nr)
{
    int h, ex = 0;
    h = nr % MODULO;
    nod *p;
    for ( p = v[h]; p && !ex; p = p-> next)
        if ( p -> info == nr)
           ex = 1;
           
    return ex;
}

void adaug(int nr)
{
     int h;
     nod *aux;
     h = nr % MODULO;
     aux = new nod;
     aux -> info = nr;
     aux -> next = v[h];
     v[h] = aux;     
}



void sterge(int nr)
{
     int h;
     nod *p;
     h = nr % MODULO;
      
     for( p = v[h]; p; p = p -> next) 
          if( p -> info == nr) 
              break; 

     if( !p) 
         return; 

    p -> info = v[h] -> info; 
    p = v[h]; 
    v[h] = v[h] -> next; 
    delete p;
}



int main()
{
    int i, op, nr;
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
 //   memset(v, 0, sizeof(v));
    
    scanf("%d", &n);
    for ( i = 1; i <= n; i++)
    {
        scanf("%d %d", &op, &nr);
            
        if ( op == 1)
           if (!cauta(nr))
              adaug(nr);
              
        if ( op == 2)
           sterge(nr);
          
        if ( op == 3)
           printf("%d\n", cauta(nr));         
        
    }
    
    return 0;
}