Pagini recente » Cod sursa (job #3150828) | Cod sursa (job #1998913) | Monitorul de evaluare | Cod sursa (job #2211098) | Cod sursa (job #2001171)
#include <bits/stdc++.h>
using namespace std;
FILE *F=fopen("hashuri.in", "r"), *G=fopen("hashuri.out", "w");
int v[1000003], p,x, y, n, L[666014], nxt[1000003];
const int MOD = 666013;
inline void adaug(int p, int x)
{
v[p] = x;
nxt[p] = L[x%MOD];
L[x%MOD] = p;
}
inline int caut(int x)
{
p = L[x%MOD];
while(p)
if(v[p] == x) return 1;
else p = nxt[p];
return 0;
}
inline void sterg(int x)
{
p = L[x%MOD];
if(v[p] == x)
L[x%MOD] = nxt[L[x%MOD]];
else
{
while(nxt[p])
if(v[nxt[p]] == x)
{nxt[p] = nxt[nxt[p]];break;}
else p = nxt[p];
}
}
int main()
{
fscanf(F, "%d ", &n);
for(int i = 0; i < n; ++ i)
{
fscanf(F, "%d%d ", &x, &y);
if(x == 1){if(!caut(y)) adaug(i, y);}
else if(x == 3) fprintf(G, "%d\n", caut(y));
else if(caut(y)) sterg(y);
}
return 0;
}