Cod sursa(job #272992)

Utilizator pandaemonAndrei Popescu pandaemon Data 8 martie 2009 00:43:04
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<stdio.h>

#define MOD 700111

struct map { int val; map *last,*next; } *v[MOD];

void inline add_node(int x)
{
  int rest= x%MOD;

  map *p=new map;   p->val=x;

  p->last=v[rest];  v[rest]->next=p;

  v[rest]=p;        p->next=NULL;

}

void delete_node(int x)
{
  int rest= x%MOD;  map *p;

  for(p=v[rest]; p!=NULL && p->val!=x; p=p->last) ;

  if( p->val==x )
  {
    if(p->next==NULL) v[rest]=p->last;

    p->last->next=p->next;
    p->next->last=p->last;

    delete p;

  }

}


void search_node(int x)
{
 int rest= x%MOD; map *p;

 for(p=v[rest]; p!=NULL && p->val!=x; p=p->last) ;

 if( p->val==x ) printf("1\n");
 else            printf("0\n");

}


int main()
{

   int n,op,x;

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

   scanf("%d",&n);

   while(n--)
   {
      scanf("%d %d",&op,&x);

      if(op==1) add_node(x);

      if(op==2) delete_node(x);

      if(op==3) search_node(x);

   }

  return 1;
}