Pagini recente » Cod sursa (job #2224421) | Cod sursa (job #1662778) | Cod sursa (job #3041228) | Cod sursa (job #1912842) | Cod sursa (job #1488039)
#include <bits/stdc++.h>
using namespace std;
vector<int> H[666013];
int caut(int who, int wh, int p, int q) {
if(p > q)
return p;
int m = (q - p) / 2 + p;
if(H[wh][m] > who) {
caut(who, wh, p, m - 1);
}
else if(H[wh][m] < who) {
caut(who, wh, m + 1, q);
}
else return m;
}
int main()
{
FILE *f = fopen("hashuri.in", "r");
FILE *g = fopen("hashuri.out", "w");
int n, op, x;
fscanf(f, "%d", &n);
while(n) {
fscanf(f, "%d %d", &op, &x);
int r = x % 666013;
int unde = caut(x, r, 0, H[r].size() - 1);
if(op == 1) {
if(!H[r].size() || H[r][unde] != x)
H[r].push_back(x);
}
else if(op == 2) {
if(H[r].size() && H[r][unde] == x) {
for(int i = unde; i < H[r].size() - 1; i ++)
H[r][i] = H[r][i + 1];
H[r].erase(H[r].end() - 1);
}
}
else {
if(H[r].size() && H[r][unde] == x)
fprintf(g, "1\n");
else fprintf(g, "0\n");
}
n --;
}
return 0;
}