Cod sursa(job #405648)

Utilizator loginLogin Iustin Anca login Data 28 februarie 2010 15:07:52
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
# include <fstream>
# include <iostream>
# include <cstdio>
using namespace std;
struct nod {
	int k;
	nod*next;};

nod *v[1000003];
	
int h (int a)
{
	return a%1000000;
}

int apare (int x)
{
	int i=h(x);
	nod *p=v[i];
	while (p)
	{
		if (p->k==x)
			return 1;
		p=p->next;
	}
	return 0;
}

void add (int x)
{
	int i=h(x);
	nod *p=new nod;
	p->k=x;
	p->next=v[i];
	v[i]=p;
}

void Del (int x)
{
	int i=h(x);
	nod *p=v[i];
	if (v[i]->k==x)
	{
		v[i]=p->next;
		delete p;
	}
	else
	{
		while (p->next && p->next->k!=x)p=p->next;
		nod *q;
		q=p->next;
		p->next=q->next;
		delete q;
	}
}
		
	
int main ()
{
	ifstream fin ("hashuri.in");
	freopen ("hashuri.out", "w", stdout);
	int n, k, x;
	fin>>n;
	for (int i=1;i<=n;i++)
	{
		fin>>k>>x;
		if (k==1)
		{		
			if (apare(x)==0)
				add(x);
		}
		else
			if (k==2)
			{
				if (apare(x))
					Del(x);
			}
			else
				printf("%d\n", apare(x));
	}
	return 0;
}