Pagini recente » Cod sursa (job #1338552) | Cod sursa (job #2263058) | Cod sursa (job #1654870) | Cod sursa (job #757702) | Cod sursa (job #1233398)
#include<stdio.h>
using namespace std;
const int L = 1000003;
long long val[L];
const int R = 666019;
int urm[L], lst[R], m = 0;
void adauga (int x)
{
int tip = x % R;
val[++m] = x;
urm[m] = lst[tip];
lst[tip] = m;
}
bool cauta (int x)
{
int p = lst[x%R];
while (p != 0)
{
if (x == val[p])
return true;
p = urm[p];
}
return false;
}
void sterge(int x)
{
int tip = x % R, p;
p = lst[tip];
if (x == val[p])
lst[tip] = urm[p];
while (urm[p] != 0)
{
if (x == val[urm[p]])
{
urm[p] = urm[urm[p]];
return;
}
p = urm[p];
}
}
int main ()
{
FILE *in, *out;
in = fopen ("hashuri.in","r");
out = fopen ("hashuri.out", "w");
int intrebare, n, x;
int i;
fscanf(in, "%d", &n);
for (i = 0; i < n; i++)
{
fscanf(in, "%d%d", &intrebare, &x);
if (intrebare == 1)
{
if (cauta(x) == false)
adauga(x);
}
if (intrebare == 2)
{
if (cauta(x) == true)
sterge(x);
}
if (intrebare == 3)
{
if (cauta(x) == true)
fprintf(out, "1\n");
else
fprintf(out,"0\n");
}
}
return 0;
}