Cod sursa(job #1142507)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 13 martie 2014 21:37:17
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream>
#include<vector>
#define Nmax 666013
using namespace std;

vector<int>v[Nmax];

int hashing(int a){
	return a%Nmax;
}

int find(int a){
	int index = hashing(a);
	for (vector<int>::iterator j = v[index].begin(); j != v[index].end(); j++){
		if (*j == a)
			return 1;
	}
	return 0;
}

void insert(int a){
	int index = hashing(a);
	if (find(a) ==0)
		v[index].push_back(a);

}

void remove(int a){
	int index = hashing(a);
	bool gasit = false;
	for (vector<int>::iterator j = v[index].begin(); j != v[index].end(); j++){
		if (*j == a){
				*j = v[index].back();
				gasit = true;
				
		}
	}
	if (gasit){
		v[index].pop_back();
	}
	
}

int main(){
	int n, comanda, x;
	ifstream fin("hashuri.in");
	ofstream fout("hashuri.out");
	fin >> n;
	for (int i = 0; i < n; i++){
		fin >> comanda>>x;
		switch (comanda){
		case 1:	{insert(x); break; }
		case 2: {remove(x); break; }
		case 3: {fout<<find(x)<<"\n"; break; }
		}
	}
	fin.close();
	fout.close();
	return 0;
}