Cod sursa(job #518913)

Utilizator mottyMatei-Dan Epure motty Data 3 ianuarie 2011 14:57:13
Problema Hashuri Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <vector>

using namespace std;

const int N=666013;

int n;
vector <int> v[N];

bool Find(int val)
{
	int sz=v[val%N].size();
	
	for( int i=0; i<sz; ++i)
		if(v[val%N][i]==val)
			return 1;
	
	return 0;
}

inline void Add(int val)
{
	v[val%N].push_back(val);
}

inline void Delete(int val)
{
	int i, sz=v[val%N].size();
	
	for( i=0; i<sz && v[val%N][i]!=val; ++i);
	
	if(i<sz)
	{
		++i;
		for(; i<sz; ++i)
			v[val%N][i-1]=v[val%N][i];
	
		v[val%N][sz-1]=0;
	}
}

int main()
{
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	
	int tip, val;
	
	scanf("%d",&n);
	
	while(n--)
	{
		scanf("%d%d",&tip,&val);
		
		if(tip==1 && !Find(val))
			Add(val);
		else if(tip==2)
			Delete(val);
		else
			printf("%d\n",Find(val));
	}
	
	return 0;
}