Pagini recente » Cod sursa (job #3132804) | Cod sursa (job #2373517) | Cod sursa (job #1488921) | Cod sursa (job #2302624) | Cod sursa (job #2899081)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int NMAX=1000006, MOD = 666013;
int val[NMAX], start[NMAX], urm[NMAX];
int nr;
bool exista(int x)
{
int c = x % MOD, j;
for(j = start[c]; j != 0; j = urm[j])
{
if(val[j] == x)
{
return true;
}
}
return false;
}
void adauga(int x)
{
int c = x % MOD;
if(exista(x))
{
return;
}
val[++nr] = x;
urm[nr] = start[c];
start[c] = nr;
}
void sterge(int x)
{
int c = x % MOD, p = start[c];
while(p != 0 and val[p] != x)
{
p = urm[p];
}
if(p != 0)
{
val[p] = val[start[c]];
start[c] = urm[start[c]];
}
}
int main()
{
int n;
f >> n;
while(n--)
{
int tip, x;
f >> tip >> x;
switch(tip)
{
case 1:
adauga(x);
break;
case 2:
sterge(x);
break;
case 3:
if(exista(x))
{
g << 1 << "\n";
}
else{
g << 0 << "\n";
}
break;
}
}
return 0;
}