Cod sursa(job #413100)

Utilizator nandoLicker Nandor nando Data 7 martie 2010 17:38:52
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <vector>

using namespace std;

const int P=666013;

vector<int> hash[P];

vector<int>::iterator find(int a){
	int pos=a%P;
	vector<int>::iterator it;
	for(it=hash[pos].begin();it!=hash[pos].end();it++){
		if(*it==a){
			return it;
		}
	}
	return hash[pos].end();
}
void add(int a){
	if(find(a)==hash[a%P].end()){
		hash[a%P].push_back(a);
	}
}
void erase(int b){
	vector<int>::iterator it=find(b);
	if(it!=hash[b%P].end()){
		hash[b%P].erase(it);
	}
}
int main(){
	FILE* fin=fopen("hashuri.in","r");
	FILE* fout=fopen("hashuri.out","w");
	int n,a,b;
	fscanf(fin,"%u",&n);
	for(int i=0;i<n;i++){
		fscanf(fin,"%u %u",&a,&b);
		switch(a){
			case 1:
				add(b);
				break;
			case 2:
				erase(b);
				break;
			case 3:
				fprintf(fout,"%u\n",(find(b)==hash[b%P].end())?0:1);
				break;
			default:
				break;
		}
	}
	fclose(fin);
	fclose(fout);
	return 0;
}