Cod sursa(job #238819)

Utilizator gh09chisinau gheorghita gh09 Data 3 ianuarie 2009 12:54:47
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.98 kb
# include <cstdio>
# include <vector>

using namespace std;

# define FIN "hashuri.in"
# define FOUT "hashuri.out"
# define pb push_back
# define Mod 666013

struct lista
{
   int info;
   lista *next;
} *Hash[Mod + 5];

int N, i, val, op;

     void add(lista *&p, int val)
     {
         lista *q;
         
         q = p;
         while (q != NULL)
            {
               if (q -> info == val) return;
               
               q = q -> next;
            }
         
         q = p;
         
         if (p == NULL) p = new lista;
         
         p -> info = val;
         p -> next = q;
     }
     
     void find(lista *p, int val)
     {
         lista *q;
         
         q = p;
         while (q != NULL)
            {
               if (q -> info == val)
                  {
                     printf("1\n");
                     return;
                  }
               
               q = q -> next;
            }
            
         printf("0\n");
     }
     
     void erase(lista *&p, int val)
     {
         lista *q, *w;
         
         q = p;
         while (q != NULL && q -> info != val)
           q = q -> next;
           
         if (q == NULL) return;
           
         if (q == p)
            {
               w = p;
               p = p -> next;
               delete w;
            }
         else
            {
               w = q;
               q = w -> next;
               delete w;
            }
     }

     int main()
     {
         freopen(FIN,"r",stdin);
         freopen(FOUT,"w",stdout);
         
         scanf("%d",&N);
         for (i = 1; i <= N; ++i)
            {
                scanf("%d %d",&op,&val);
                
                if (op == 1) add(Hash[val % Mod], val);
                if (op == 2) erase(Hash[val % Mod], val);
                if (op == 3) find(Hash[val % Mod], val);
            }
         
         return 0;
     }