Cod sursa(job #524255)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 20 ianuarie 2011 19:48:41
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define file_in "hashuri.in"
#define file_out "hashuri.out"

#define mod 666013

int Q,tip,x;
vector<int> G[1010010];

#define dim 8192
char ax[dim];
int pz;

inline void cit (int &x)
{
	x = 0;
	while (ax[pz] < '0' || ax[pz] > '9')
		if (++pz == dim)
			fread (ax, 1, dim, stdin), pz = 0;

	while (ax[pz] >= '0' && ax[pz] <= '9')
	{
		x = x * 10 + ax[pz] - '0';
		if (++pz == dim)
			fread (ax, 1, dim, stdin), pz = 0;
	}
}



void add(int x){
	
	int k=x%mod;
	G[k].push_back(x);
}


int find(int x){

	int k=x%mod;
	
	vector<int> :: iterator it;
	
	for (it=G[k].begin();it!=G[k].end();++it)
		 if (*it==x)
			 return 1;
		 
	return 0;

}

void erase(int x){
	
	int k=x%mod;
	
	if (!find(x))
		return ;
	
	vector<int> :: iterator it;
	
	for (it=G[k].begin();it!=G[k].end();++it)
		 if (*it==x){
			 G[k].erase(it);
			 return ;
		 }
}

	
int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	cit(Q);
	
	while(Q--){
		
		cit(tip);
		cit(x);
		
		if (tip==1){
			add(x);
		}
		else
		if (tip==2){
			erase(x);
		}
		else{
			printf("%d\n", find(x));
		}
	}
	
	return 0;
	
}