Cod sursa(job #1142491)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 13 martie 2014 21:22:08
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>
#include<vector>
#define Nmax (2<<12)-1
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;
	if (!v[index].empty())
	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)<<" "; break; }
		}
	}
	system("pause");
	return 0;
}