Pagini recente » Cod sursa (job #10077) | Cod sursa (job #2264008) | Cod sursa (job #1591224) | Cod sursa (job #2839323) | Cod sursa (job #2698508)
#include <fstream>
#include <utility>
constexpr int N = 1000000;
constexpr int MOD = 666019;
int next[N], v[N], lst[MOD], nr = 1;
void insert(int x) {
int m = x % MOD;
next[nr] = lst[m];
lst[m] = nr;
v[nr++] = x;
}
int search(int x) {
int m = x % MOD;
int p = lst[m];
while (p != 0 && v[p] != x) {
p = next[p];
}
return p;
}
void remove(int x) {
int m = x % MOD;
int p = search(x);
if (p == 0) {
return;
}
std::swap(v[p], v[lst[m]]);
lst[m] = next[lst[m]];
}
int main() {
std::ifstream in("hashuri.in");
std::ofstream out("hashuri.out");
int n;
in >> n;
for (int i = 0; i < n; ++i) {
int op, arg;
in >> op >> arg;
switch (op) {
case 1:
insert(arg);
break;
case 2:
remove(arg);
break;
case 3:
out << (search(arg) != 0) << '\n';
default:;
}
}
}