Cod sursa(job #711920)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 12 martie 2012 21:17:00
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include<fstream>
using namespace std;
struct nod{int info;
		   nod *urm;};
nod *v[1000001],*p;
int afis(int y)
{ 
	for(p=v[y%1000000];p;p=p->urm)
		if(p->info==y)return 1;
	return 0;
}
void add(int y)
{	int k=0;
	for(p=v[y%1000000];p;p=p->urm)
		if(p->info==y){k=1;break;}
	if(k==0){if(v[y%1000000]->info==-1)v[y%1000000]->info=y;
			else {p=new nod;
			p->info=y;
			p->urm=v[y%1000000]->urm;
			v[y%1000000]->urm=p;}}
}
void del(int y)
{
	if(v[y%1000000]->info==-1);
	else if(v[y%1000000]->info==y&&v[y%1000000]->urm!=NULL)v[y%1000000]=v[y%1000000]->urm;
	else if(v[y%1000000]->info==y){v[y%1000000]->info=-1;v[y%1000000]->urm=NULL;}
	else for(p=v[y%1000000];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<=1000000;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;
}