Pagini recente » Cod sursa (job #2048804) | Cod sursa (job #2703891) | Cod sursa (job #2816092) | Monitorul de evaluare | Cod sursa (job #2293864)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> numere[735337];
int h(int val) {
return val % 735337;
}
void interschimba(int &a, int &b) {
int aux = a;
a = b;
b = aux;
}
int cauta(int val) {
int cod = h(val);
for (int i = 0; i < numere[cod].size(); i++)
if (numere[cod][i] == val)
return i;
return -1;
}
void insereaza(int val) {
int cod = h(val);
if (cauta(val) == -1)
numere[cod].push_back(val);
}
void sterge(int val) {
int cod = h(val), poz = cauta(val);
// la stergere se interschimba elementul de pe pozitia gasita cu ultimul element, apoi se da pop
if (poz >= 0) {
interschimba(numere[cod][poz], numere[cod].back());
numere[cod].pop_back();
}
}
int main() {
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int n, op, x;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &op, &x);
if (op == 1)
insereaza(x);
if (op == 2)
sterge(x);
if (op == 3)
if (cauta(x) == -1)
printf("0\n");
else
printf("1\n");
}
return 0;
}