Pagini recente » Cod sursa (job #1603701) | Cod sursa (job #399755) | Cod sursa (job #3189534) | Cod sursa (job #2366500) | Cod sursa (job #1503503)
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 1000001;
const int M = 1500000;
int N;
int h[M];
bool viz[M];
bool filled[M];
void adauga(int key) {
int value = key % M;
int i = 1;
while(filled[value]) {
value += i;
i++;
if(value >= M)
value %= M;
}
filled[value] = true;
viz[value] = true;
h[value] = key;
}
void sterge(int key) {
int value = key % M;
for(int i = 1; h[value] != key && viz[value] == true && i < M; ++i) {
value += i;
if(value >= M)
value %= M;
}
if(h[value] == key)
filled[value] = false;
}
int interogare(int key) {
int value = key % M;
for(int i = 1; viz[value] == true && h[value] != key && i < M; ++i) {
value += i;
if(value >= M)
value %= M;
}
if(h[value] == key && filled[value] == true)
return 1;
return 0;
}
int main() {
ifstream fin ("hashuri.in");
ofstream fout ("hashuri.out");
fin >> N;
while(N--) {
int type; int x;
fin >> type >> x;
switch(type) {
case 1: adauga(x); break;
case 2: sterge(x); break;
case 3: fout << interogare(x) << '\n'; break;
}
}
return 0;
}