Cod sursa(job #2946347)

Utilizator george_buzasGeorge Buzas george_buzas Data 24 noiembrie 2022 19:31:29
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <fstream>
#include <map>
#include <vector>
#define MODULO 250000
using namespace std;

class HashMap {
private:
	vector<int> hash_map[MODULO];

public:
	int get_key(int value) {
		return value % MODULO;
	}

	void insert_element(int number) {
		if (find_element(number) == -1) {
			return;
		}
		int key = get_key(number);
		hash_map[key].push_back(number);
	}

	void delete_element(int number) {
		int element_index = find_element(number);
		if (element_index > -1) {
			int key = get_key(number);
			hash_map[key].erase(hash_map[key].begin() + element_index);
		}
	}

	int find_element(int number) {
		int key = get_key(number);
		int nr_mapped_values = hash_map[key].size();
		for (int i = 0; i < nr_mapped_values; ++i) {
			if (hash_map[key][i] == number) {
				return i;
			}
		}
		return -1;
	}
};

HashMap hash_map;

int main() {
	ifstream fin("hashuri.in");
	ofstream fout("hashuri.out");
	int nr_operations, operation_type, number;
	fin >> nr_operations;
	for (int i = 0; i < nr_operations; ++i) {
		fin >> operation_type >> number;
		if (operation_type == 1) {
			hash_map.insert_element(number);
		} else if (operation_type == 2) {
			hash_map.delete_element(number);
		} else {
			int number_index = hash_map.find_element(number);
			if (number_index == -1) {
				fout << 0 << '\n';
			} else {
				fout << number_index << '\n';
			}
		}
	}
	return 0;
}