Pagini recente » Cod sursa (job #934809) | Cod sursa (job #1269826) | Cod sursa (job #1342249) | Cod sursa (job #730206) | Cod sursa (job #2038200)
#include <cstdio>
#include <cctype>
#include <vector>
#include <algorithm>
FILE *fin, *fout;
#define mod 666013
#define BUF 1 << 17
char buf[BUF];int pos = BUF;
inline char next() {
if(pos == BUF)
fread(buf, 1, BUF, fin), pos = 0;
return buf[pos++];
}
inline int read() {
char ch = next();
while(!isdigit(ch)) {
ch = next();
}
int x = 0;
while(isdigit(ch)) {
x = x * 10 + ch - '0';
ch = next();
}
return x;
}
struct Hash {
std::vector <int> h[mod];
inline void insert(int x) {
int rest = x % mod;
for(size_t i = 0;i < h[rest].size();i++) {
if(h[rest][i] == x)
return;
}
h[rest].push_back(x);
}
inline void erase(int x) {
int rest = x % mod;
for(size_t i = 0;i < h[rest].size();i++) {
if(h[rest][i] == x) {
std::swap(h[rest][i], h[rest][h[rest].size() - 1]);
h[rest].pop_back();
break;
}
}
}
inline bool find(int x) {
int rest = x % mod;
for(size_t i = 0;i < h[rest].size();i++) {
if(h[rest][i] == x) {
return 1;
}
}
return 0;
}
};
Hash hh;
int main() {
fin = fopen("hashuri.in", "r");
fout = fopen("hashuri.out", "w");
int N;
N = read();
for(int i = 1;i <= N;i++) {
int op, x;
op = read(), x = read();
if(op == 1) {
hh.insert(x);
}
else if(op == 2) {
hh.erase(x);
}
else {
fprintf(fout, "%d\n", hh.find(x));
}
}
fclose(fin);
fclose(fout);
return 0;
}