Pagini recente » Cod sursa (job #1523038) | Cod sursa (job #2716609) | Cod sursa (job #2199506) | Cod sursa (job #536690) | Cod sursa (job #3155687)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define K 666019
#define N 1000000
typedef struct
{
int urm;
int info;
} element;
int lst[K], n_elem;
element v[N+1];
int pozitie_v(int val)
{
int categorie = val % K;
int p = lst[categorie];
while (p != 0)
{
if (v[p].info == val)
{
return p;
}
p = v[p].urm;
}
return 0;
}
void adauga(int val)
{
int categorie = val % K;
n_elem++;
v[n_elem].info = val;
v[n_elem].urm = lst[categorie];
lst[categorie] = n_elem;
}
void sterge(int p)
{
int categorie = v[p].info % K;
int ultimul_categorie = lst[categorie];
v[p].info = v[ultimul_categorie].info;
lst[categorie] = v[ultimul_categorie].urm;
}
int main()
{
FILE *in, *out;
in = fopen("hashuri.in", "r");
out = fopen("hashuri.out", "w");
int n;
fscanf(in, "%d", &n);
for (int i = 0; i < n; i++)
{
int tip, val;
fscanf(in, "%d%d", &tip, &val);
int p = pozitie_v(val);
if (tip == 1)
{
if (p == 0)
{
adauga(val);
}
}
else if (tip == 2)
{
if (p != 0)
{
sterge(p);
}
}
else
{
fprintf(out, "%d\n", (int)(p != 0));
}
}
fclose(in);
fclose(out);
return 0;
}