Pagini recente » Istoria paginii runda/cex01/clasament | Cod sursa (job #2038282) | Cod sursa (job #738819) | Cod sursa (job #1859836) | Cod sursa (job #2760603)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
vector<vector<long long>> Hash(666013);
int N;
void Rezolvare()
{
long long op, disp, x;
fin >> N;
for (int i = 0; i < N; i++)
{
fin >> op >> x;
disp = x % 666013;
//operatia de tipul 1: se adauga elementul x la multime (unde x este un parametru al operatiei).
//Daca x este deja in multime, atunci aceasta ramane neschimbata.
if (op == 1) Hash[disp].push_back(x);
//operatia de tipul 2: se sterge elementul x, daca acesta este deja in multime. In caz contrar, multimea ramane neschimbata.
if (op == 2)
for (int i = 0; i < Hash[disp].size(); i++)
if (Hash[disp][i] == x) Hash[disp].erase(Hash[disp].begin() + i);
//operatia de tipul 3: returneaza 1 daca si numai daca x este in multime, iar in caz contrar returneaza 0.
if (op == 3)
{
bool gasit = 0;
for (int i = 0; i < Hash[disp].size(); i++)
if (Hash[disp][i] == x)
{
fout << '1' << '\n';
gasit = 1;
}
if (gasit == 0) fout << '0' << '\n';
}
}
}
int main()
{
Rezolvare();
return 0;
}