Pagini recente » Cod sursa (job #2608312) | Cod sursa (job #2194227) | Cod sursa (job #2559104) | Cod sursa (job #24707) | Cod sursa (job #2627265)
#include <fstream>
using namespace std;
const int N = 1e6 + 1, K = 666019;
static int nr = 0;
int lst[K], val[N], urm[K];
bool apartine(int x) {
int r = x % K;
for (int p = lst[r]; p != 0; p = urm[p])
if (val[p] == x)
return true;
return false;
}
void adauga(int x) {
if (apartine(x))
return;
int r = x % K;
val[++ nr] = x;
urm[nr] = lst[r];
lst[r] = nr;
}
void sterge(int x) {
int r = x % K, p = lst[r];
while (p != 0 && val[p] != x)
p = urm[p];
if (p != 0) {
val[p] = val[lst[r]];
lst[r] = urm[lst[r]];
}
}
int main() {
ifstream in("hashuri.in");
ofstream out("hashuri.out");
int n, x, op;
in >> n;
for (int i = 1; i <= n; i ++) {
in >> op >> x;
switch (op) {
case 1:
adauga(x);
break;
case 2:
sterge(x);
break;
case 3:
out << apartine(x) << "\n";
break;
}
}
in.close();
out.close();
return 0;
}