Cod sursa(job #754539)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 2 iunie 2012 15:22:43
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
                                                     
#include <fstream>
using namespace std;

const long Prim = 666013;

struct TLink;
typedef TLink *PLink;
struct TLink
{
 long nr;
 PLink Next;
};

PLink HashTable[Prim];

void linkadd(PLink &l,long a)
{
 if (l == 0)
   {
    l = new TLink;
    l->nr = a;
    l->Next = 0;
    return;
   }
 if (l->nr == a)
   {
    return;
   }
 linkadd(l->Next,a);
}

void add(long a)
{
 long pos = a % Prim;
 linkadd(HashTable[pos],a);
}

void linkdel(PLink &l,long a)
{
 if (l == 0)
   {
    return;
   }
 if (l->nr == a)
   {
    PLink x = l;
    l = l->Next;
    delete x;
    return;
   }
 linkdel(l->Next,a);
}

void del(long a)
{
 long pos = a % Prim;
 linkdel(HashTable[pos],a);
}

long linkver(PLink &l,long a)
{
 if (l == 0)
   {
    return 0;
   }
 if (l->nr == a)
   {
    return 1;
   }
 return linkver(l->Next,a);
}

long ver(long a)
{
 long pos = a % Prim;
 return linkver(HashTable[pos],a);
}

int main(void)
{
 long N,O,i,a;
 fstream fin("hashuri.in",ios::in);
 fstream fout("hashuri.out",ios::out);
 fin >> N;
 for (i = 0;i < N;i += 1)
  {
   fin >> O >> a;
   switch (O)
   {
    case 1 :
      {
       add(a);
      }
     break;
    case 2 :
      {
       del(a);
      }
     break;
    case 3 :
      {
       fout << ver(a) << "\n";
      }
     break;
   };
  }
 fin.close();
 fout.close();
 return 0;
}