Cod sursa(job #2575129)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 6 martie 2020 11:47:09
Problema Hashuri Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>

using namespace std;

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

const int mod1 = 666013;
const int mod2 = 777013;

vector<int>hash1[mod1];
vector<int>hash2[mod2];

inline bool apare(int &val, vector<int>hash[], int mod)
{
	int r = val % mod;
	for (int i = 0; i < hash[r].size(); i++)
		if (hash[r][i] == val)
			return true;
	return false;
}

inline void adauga(int &val, vector<int>hash[], int mod)
{
	if (apare(val, hash, mod)) return;
	int r = val % mod;
	hash[r].push_back(val);
	if (hash[r].size() >= 2)
		sort(hash[r].begin(), hash[r].end());
}

inline void sterge(int &val, vector<int> hash[], int mod)
{
	if (!apare(val, hash, mod)) return;
	int r = val % mod;
	hash[r].erase(lower_bound(hash[r].begin(), hash[r].end(), val));
}

int main()
{
	int t;
	fin >> t;
	while (t--)
	{
		int tip, val;
		fin >> tip >> val;
		if (tip == 1)
		{
			adauga(val, hash1, mod1);
			adauga(val, hash2, mod2);
		}
		else if (tip == 2)
		{
			sterge(val, hash1, mod1);
			sterge(val, hash2, mod2);
		}
		else
			fout << (apare(val, hash1, mod1) && apare(val, hash2, mod2)) << "\n";
	}
	return 0;
}