Cod sursa(job #604659)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 24 iulie 2011 11:44:01
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream.h>
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int NMAX=666013;
struct hash
{ int val;
  hash *next;
  /*hash()
	  { val=0;
	    next=0;
	  }*/
};
hash *h[NMAX+2]/*=new hash[NMAX+2]*/;
hash *p;
int n,op,x;

void add()
{ int nr=x%NMAX;
  p=h[nr];
  while(p) { if(p->val==x) return; p=p->next;}
  p=new hash;
  p->next=h[nr];
  p->val=x;
  h[nr]=p;
}

void del()
{ int nr=x%NMAX;
  p=h[nr];
  if(!p) return;
  if(p->val==x) { h[nr]=p->next; delete p; return;}
  while(p->next->val!=x&&p->next) p=p->next;
  if(!p->next) return;
  hash *q=p->next;
  p->next=q->next;
  delete q;
}

int que()
{ int nr=x%NMAX;
  p=h[nr];
  while(p) 
	  { if(p->val==x) return 1;
	    p=p->next;
	  }
  return 0;
}

int main()
{ f>>n;
  while(n)
	  { f>>op>>x;
	    switch(op)
			{ case 1: add(); break;
			  case 2: del(); break;
			  case 3: g<<que()<<'\n'; break;
			}
		--n;
	  }
  f.close(); g.close();
  return 0;
}