Pagini recente » Cod sursa (job #1639564) | Cod sursa (job #2478740) | Cod sursa (job #35935) | Cod sursa (job #1810043) | Cod sursa (job #1184828)
#include <fstream>
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
const int MAX_N = 1000000, K = 1758900;
int lst[K], urm[MAX_N+1], val[MAX_N+1];
int nr;
bool inline check(int x)
{
int p = lst[x%K];
while(p != 0 && val[p] != x)
{
p = urm[p];
}
return p != 0;
}
void inline del(int x)
{
int r = x%K, p;
if(x == val[lst[r]])
{
lst[r] = urm[lst[r]];
return;
}
p = lst[r];
while(urm[p] != 0 && val[urm[p]] != x)
{
p = urm[p];
}
if(val[urm[p]] == x)
{
urm[p] = urm[urm[p]];
}
}
void inline add(int x)
{
if(!check(x))
{
int place = x%K;
val[++nr] = x;
urm[nr] = lst[place];
lst[place] = nr;
}
}
int main()
{
int n, i, x;
char type;
in >> n;
for(i = 0; i < n; i++)
{
in >> type >> x;
if(type == '1')
add(x);
else if(type == '2')
del(x);
else out << check(x) << "\n";
}
return 0;
}