Pagini recente » Cod sursa (job #1523458) | Cod sursa (job #500937) | Cod sursa (job #2711456) | Cod sursa (job #2265990) | Cod sursa (job #1964882)
#include<stdio.h>
using namespace std;
const int M = 100005, N = 1000005;
int lst[M], urm[N], v[N], nr;
void adauga (int x)
{
int p = x % M;
v[++nr] = x;
urm[nr] = lst[p];
lst[p] = nr;
}
bool cauta (int x)
{
int p = lst[x % M];
while (p != 0)
{
if (v[p] == x)
return true;
p = urm[p];
}
return false;
}
void sterge (int x)
{
int p = lst[x % M];
if (p == 0)
return;
if (v[p] == x)
{
lst[x % M] = urm[p];
return;
}
int ant;
ant = p;
p = urm[p];
while (p != 0)
{
if (v[p] == x)
{
urm[ant] = urm[p];
return;
}
ant = p;
p = urm[p];
}
}
int main ()
{
FILE *in, *out;
in = fopen ("hashuri.in", "r");
out = fopen ("hashuri.out", "w");
int n, cerinta, i, x;
fscanf (in, "%d", &n);
for (i = 1; i <= n; i++)
{
fscanf (in, "%d%d", &cerinta, &x);
if (cerinta == 1 && cauta(x) == false)
adauga (x);
if (cerinta == 2)
sterge (x);
if (cerinta == 3)
fprintf (out, "%d\n", cauta(x));
}
return 0;
}