Cod sursa(job #404895)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 26 februarie 2010 21:15:26
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream.h>
#include<fstream.h>

const int mod=666013;

struct nod {
		   int inf;
		   nod *next;
		   }*v[666013],*p;

void op1(int x)
{
int r,ok=1;
r=x%mod;
p=v[r];
while(p && ok){
			  if(p->inf==x)ok=0;
			  p=p->next;
			  }
if(ok){
	  p=new nod;
	  p->inf=x;
	  p->next=v[r];
	  v[r]=p;
	  }
}

void op2(int x)
{
int r;
r=x%mod;
p=v[r];
if(p){
	 if(p->inf==x){
				  if(p->next)v[r]=v[r]->next;
				  else v[r]=NULL;
				  return;
				  }
	 while(p->next){
				   if(p->next->inf==x)
						{
						if(p->next->next)p->next=p->next->next;
						else p->next=NULL;
						return;
					    }
				   p=p->next;
				   }
	 }
}

int op3(int x)
{
int r;
r=x%mod;
p=v[r];
while(p){
		if(p->inf==x)return 1;
		p=p->next;
		}
return 0;
}

int main()
{
int i,n,op,x;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
fin>>n;
for(i=1;i<=n;i++){
				 fin>>op>>x;
				 switch(op){
						   case 1:op1(x);break;
						   case 2:op2(x);break;
						   case 3:fout<<op3(x)<<'\n';break;
						   }
				 }
return 0;
}