Pagini recente » Cod sursa (job #2075013) | Cod sursa (job #2809260) | Cod sursa (job #322179) | Cod sursa (job #472855) | Cod sursa (job #1541510)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define nmax 666013
ifstream fi("hashuri.in");
ofstream fo("hashuri.out");
int n;
int op, x;
vector <int> H[nmax];
void appendVal(int x)
{
int mod = x % nmax;
for (int i = 0; i < int(H[mod].size()); i++)
if (H[mod][i] == x)
return;
H[mod].push_back(x);
}
void deleteVal(int x)
{
int mod = x % nmax;
for (vector <int> :: iterator it = H[mod].begin(); it != H[mod].end(); it++)
if (*it = x)
{
H[mod].erase(it);
return;
}
}
bool check(int x)
{
int mod = x % nmax;
for (int i = 0; i < int(H[mod].size()); i++)
if (H[mod][i] == x)
return 1;
return 0;
}
int main()
{
fi >> n;
for (int i = 1; i <= n; i++)
{
fi >> op >> x;
if (op == 1)
{
// se adauga x in multime, daca x e deja in multime nu se face nimic
appendVal(x);
}
else if (op == 2)
{
// se sterge elementul x din multime doar daca e in multime
deleteVal(x);
}
else
{
// returneaza 1 daca x se afla in multime, 0 in caz contrar
fo << check(x) << "\n";
}
}
fi.close();
fo.close();
return 0;
}