Cod sursa(job #711924)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 12 martie 2012 21:18:40
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
using namespace std;
struct nod{int info;
		   nod *urm;};
nod *v[447723],*p;
int afis(int y)
{ 
	for(p=v[y%447722];p;p=p->urm)
		if(p->info==y)return 1;
	return 0;
}
void add(int y)
{	int k=0;
	for(p=v[y%447722];p;p=p->urm)
		if(p->info==y){k=1;break;}
	if(k==0){if(v[y%447722]->info==-1)v[y%447722]->info=y;
			else {p=new nod;
			p->info=y;
			p->urm=v[y%447722]->urm;
			v[y%447722]->urm=p;}}
}
void del(int y)
{
	if(v[y%447722]->info==-1);
	else if(v[y%447722]->info==y&&v[y%447722]->urm!=NULL)v[y%447722]=v[y%447722]->urm;
	else if(v[y%447722]->info==y){v[y%447722]->info=-1;v[y%447722]->urm=NULL;}
	else for(p=v[y%447722];p;p=p->urm)
				if(p->urm==NULL)break;
				else if(p->urm->info==y&&p->urm->urm!=NULL){p->urm=p->urm->urm;break;}
			    else if(p->urm->info==y){p->urm=NULL;break;}
}
int main()
{
	ifstream fcin("hashuri.in");
	ofstream fcout("hashuri.out");
	int n,i,x,y;
	fcin>>n;
	for(i=0;i<=447722;i++)
		{v[i]=new nod;v[i]->info=-1;v[i]->urm=NULL;}
	for(i=1;i<=n;i++)
	{
		fcin>>x>>y;
		if(x==3)fcout<<afis(y)<<'\n';
		else if(x==2)del(y);
		else add(y);
	}
	return 0;
}