Cod sursa(job #421953)

Utilizator ooctavTuchila Octavian ooctav Data 21 martie 2010 21:29:47
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cstdio>
#include <vector>
using namespace std;
#define NMAX 1000010
#define MOD 543997
int N;
vector<int> V[MOD];

/*bool e[NMAX];

void ciur()
{
	for(int i = 2 ; i * i < NMAX ; i++)
		if(!e[i])
			for(int j = i * i ; j < NMAX ; j += i)
				e[j] = 1;
	int nr = 0;
	for(int i = 543987 ; nr < 2 && i < NMAX; i++)
		if(!e[i])
		{
			printf("%d\n",i);
			nr++;
		}
}*/

vector<int> :: iterator find(int x)
{
	vector<int> :: iterator it;	
	for(it = V[x % MOD].begin() ; it != V[x % MOD].end() ; it++)
		if(*it == x)
			return it;
	return V[x % MOD].end();
}

void insert(int x)
{
	if(find(x) == V[x % MOD].end())
		V[x % MOD].push_back(x);
}

void out(int x)
{
	vector<int> :: iterator it = find(x);	
	if(it != V[x % MOD].end())
		V[x % MOD].erase(it);
}

void citeste()
{
	int id , x;
	scanf("%d",&N);
	for(int i = 1 ; i <= N ; i++)
	{
		scanf("%d%d",&id,&x);
		if(id == 1)
			insert(x);
		if(id == 2)
			out(x);
		if(id == 3)
			printf("%d\n",find(x) != V[x % MOD].end());
	}
}

int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	//ciur();
	citeste();
	
	return 0;
}