Pagini recente » Cod sursa (job #341839) | Cod sursa (job #2756466) | Cod sursa (job #2163886) | Cod sursa (job #546936) | Cod sursa (job #1540731)
#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 (int i = 0; i < int(H[mod].size()); i++)
if (H[mod][i] == x)
{
swap(H[mod][i], H[mod][H[mod].size()-1]);
break;
}
H[mod].pop_back();
}
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;
}