Pagini recente » Borderou de evaluare (job #201054) | Cod sursa (job #1613119) | Cod sursa (job #1965118) | Cod sursa (job #2974213) | Cod sursa (job #530603)
Cod sursa(job #530603)
#include<cstdio>
#include<vector>
#include<fstream>
using namespace std;
#define PRIME 666013
vector<int> v[PRIME];
int N;
int h(int nr) {
return nr % PRIME;
}
int isInHash(int val) {
int poz = h(val);
for (int i = 0; i < v[poz].size(); i++){
if (v[poz][i] == val) return i;
}
return -1;
}
void addHash(int val) {
int poz = h(val);
if (isInHash(val) != -1) return;
v[poz].push_back(val);
}
void removeHash(int val) {
int poz = h(val);
int loc = isInHash(val);
if (loc == -1) return;
v[poz][loc] = v[poz][v[poz].size() - 1];
v[poz].pop_back();
}
int main() {
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
fin>>N;
int i, op, val;
for(i = 0; i < N; i++) {
fin>>op>>val;
if (op == 1) addHash(val);
else if (op == 2) removeHash(val);
else fout<<(isInHash(val)==-1?0:1)<<"\n";
}
return 0;
}