Cod sursa(job #2624239)

Utilizator Cibotaru.MateiMatei-Stefan Cibotaru Cibotaru.Matei Data 4 iunie 2020 17:05:58
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define _ACCESS data[hash(x)]
using namespace std;

class Hashmap {
private:
	static int prime;
	vector<vector<int>> data;
public:
	Hashmap() {
		for (int i = 0; i < prime; i++) {
			data.push_back(vector<int>());
		}
	}

	void insert(int x) {
		if (!exists(x)) {
			_ACCESS.push_back(x);
		}
	}

	void remove(int x) {
		if (exists(x)) {
			_ACCESS.erase(find(_ACCESS.begin(), _ACCESS.end(), x));
		}
	}

	bool exists(int x) {
		return find(_ACCESS.begin(), _ACCESS.end(), x) != _ACCESS.end();
	}

	static int hash(int key) {
		return key % prime;
	}
};

int Hashmap::prime = 666013;

int main()
{
	fstream f("hashuri.in", ios::in);
	fstream g("hashuri.out", ios::out);
	
	int n;
	f >> n;
	Hashmap h;
	for (int i = 0; i < n; i++) {
		int op, x;
		f >> op >> x;
		switch (op) {
		case 1:
			h.insert(x);
			break;
		case 2:
			h.remove(x);
			break;
		case 3:
			g << h.exists(x) << "\n";
			break;
		}
	}
	
	f.close();
	g.close();
}