Cod sursa(job #711847)

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