Cod sursa(job #761161)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 25 iunie 2012 00:14:11
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
using namespace std;
const int MOD =  524287;
vector<int> H[MOD];

inline int h(int x){
	return x%MOD;
}

inline vector<int>::iterator _find(int x){
	vector<int>::iterator it;
	
	for(it = H[h(x)].begin(); it != H[h(x)].end(); it++)
		if(*it == x)
			return it;
	return it;
}

bool find(int x){
	return _find(x) != H[h(x)].end(); 
}

void add(int x){
	if(not find(x))
		H[h(x)].push_back(x);
}

void remove(int x){
	vector<int>::iterator it = _find(x);
	if( it != H[h(x)].end())
		H[h(x)].erase(it);
}

int main(){
	ifstream fin("hashuri.in");
	ofstream fout("hashuri.out");
	int nCmd, cmd, x;
	fin >> nCmd;
	for( int i = 0; i < nCmd; i++){
		fin >> cmd >> x;
		if(cmd == 1)
			add(x);
		else if(cmd == 2)
			remove(x);
		else{ // if cmd == 3;
			if(find(x))
				fout << 1 << "\n";
			else
				fout << 0 << "\n";
			}
	}
	
	return 0;
}