Cod sursa(job #1190992)

Utilizator rebound212Mihnea Savu rebound212 Data 26 mai 2014 09:28:46
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <cstdio>
#define MOD 666013
using namespace std;
int T,i,j,ind;
struct point
{
    int inf;
    point *leg;
};
point *prim,*p,*q,*u,*h[1000001];
int verif(int x, int ind)
{
   point *u,*t;
   p=h[ind];
   while(p!=NULL && p->inf!=x)
   {

       u=p;
       p=p->leg;
   }
   if(p!=NULL)
     return 1;
   return 0;

}
void sterge(int x, int ind)
{
    point *u ,*t;
    u=NULL;p=h[ind];
    while(p!=NULL && p->inf!=x)
    {
        u=p;
        p=p->leg;
    }
    if(h[ind]!=NULL &&h[ind]->inf==x)
    {
        t=h[ind];
        h[ind]=h[ind]->leg;
        delete t;
    }
    else
    if(p!=NULL)
    {
        u->leg=p->leg;
        delete p;
    }
}
bool exista(int x, int ind)
{
   for(p=h[ind] ;p!=NULL ;p=p->leg)
   {
       if(p->inf==x) return true;
   }
   return false;
}

int main()
{

       freopen("hashuri.in","r",stdin);
       freopen("hashuri.out","w",stdout);

       scanf("%d",&T);
       for(; T; --T)
       {
           scanf("%d %d",&i,&j);
           ind=j%MOD;
           if(i==1 && !exista(j,ind))
           {
               q=new point;
               q->leg=h[ind];
               q->inf=j;
               h[ind]=q;
           }
           if(i==2)
           {
               sterge(j,ind);
           }
           if(i==3)
           {
               printf("%d\n",verif(j,ind));
           }
       }
    return 0;
}