Cod sursa(job #779015)

Utilizator crushackPopescu Silviu crushack Data 16 august 2012 14:54:30
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <vector>
using namespace std;

const char IN[]="hashuri.in",OUT[]="hashuri.out";
const int mod=(1<<21) , mmod=mod-1 , prime= 13;

int N;
vector<int> H[mod];

int key(int x){
	return (1LL*x*prime)&mmod;
}

void add(int x){
	H[key(x)].push_back(x);
}

bool query(int x){
	int k=key(x);
	for (int i=0;i<(int)H[k].size();++i) if (H[k][i]==x)
		return true;
	return false;
}

void erase(int x){
	int i,j,k=key(x);
	for (i=j=0;i<(int)H[k].size();++i) if (H[k][i]!=x)
		H[k][j++]=H[k][i];
	H[k].resize(j);
}

int main()
{
	int c,x;
	freopen(IN,"r",stdin);
	scanf("%d",&N);
	freopen(OUT,"w",stdout);
	while (N--)
	{
		scanf("%d%d",&c,&x);
		if (c==1)
			add(x);
		else if (c==2)
			erase(x);
		else printf("%d\n",query(x));
	}
	fclose(stdout);
	fclose(stdin);


	return 0;
}