Cod sursa(job #2032990)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 5 octombrie 2017 22:38:06
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 666013

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

vector<int> _hash[MOD];
using h_iterator = vector<int>::iterator;

bool find(int key) {

	int indx = key % MOD;

	for (auto it = _hash[indx].begin(); it != _hash[indx].end(); ++it) {

		if (*it == key)
			return true;
	}
	return false;
}

void insert(int key) {

	int indx = key % MOD;
	if (find(key) == false)
		_hash[indx].push_back(key);
}


h_iterator find_iterator(int key) {

	int indx = key % MOD;

	for (auto it = _hash[indx].begin(); it != _hash[indx].end(); ++it) {

		if (*it == key)
			return it;
	}
	return _hash[indx].end();
}

void erase(int key) {

	int indx = key % MOD;
	h_iterator it = find_iterator(key);

	if (it != _hash[indx].end())
		_hash[indx].erase(it);
}

int main() {

	int n, op, val;
	in >> n;
	
	for (int i = 1; i <= n; i++) {

		in >> op >> val;
		switch (op) {

			case 1:
				insert(val);
				break;
			case 2:
				erase(val);
				break;
			case 3:
				out << find(val) << "\n";
				break;
		}
	}
	in.close();
	out.close();
	return 0;
}