Cod sursa(job #2210990)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 9 iunie 2018 00:17:21
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <cstdio>
#define KEY 843097 /// credits : random.org
#define MAXN 1000000
using namespace std;
/// TONI BO$$ was here
/// #MLC
int it,lista[KEY],v[MAXN+1],urm[MAXN+1];

int main()
{
   int n,q,x,mod;
   freopen("hashuri.in","r",stdin);
   freopen("hashuri.out","w",stdout);
   scanf("%d",&n);
   while(n--)
   {
      scanf("%d%d",&q,&x);
      mod=x%KEY;
      mod=lista[mod];
      while(v[mod]!=0 && v[mod]!=x)
         mod=urm[mod];
      switch(q)
      {
         case 1:  if(v[mod]==0)
                  {
                     mod=x%KEY;
                     ++it;
                     v[it]=x;
                     urm[it]=lista[mod];
                     lista[mod]=it;
                  }
                  break;

         case 2:  if(v[mod]==x)
                  {
                     mod=x%KEY;
                     if(v[lista[mod]]==x)
                     {
                        lista[mod]=urm[lista[mod]];
                        break;
                     }
                     while(urm[mod]!=0 && v[urm[mod]]!=x)
                        mod=urm[mod];
                     urm[mod]=urm[urm[mod]];
                  }
                  break;

         case 3:  printf("%d\n",(v[mod]==x));
                  break;
      }
   }

   return 0;
}