Pagini recente » Profil frEak- | Monitorul de evaluare | Diferente pentru preoni-2008/runda-2/solutii intre reviziile 7 si 6 | Cod sursa (job #804971) | Cod sursa (job #2011679)
#include <bits/stdc++.h>
using namespace std;
ifstream F("hashuri.in");
ofstream G("hashuri.out");
int n, v[1000003], nxt[1000003], L[666014], q, nr;
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)
{
int p;
p = L[x%MOD];
while(p)
if(v[p] == x) return 1;
else p = nxt[p];
return 0;
}
inline void sterg(int x)
{
int p;
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()
{
F >> n;
for(int i = 1; i <= n; ++ i)
{
F >> q >> nr;
if(q == 1&&!caut(nr)) adaug(i, nr);
else if(q == 3) G << caut(nr) << '\n';
else if(caut(nr)) sterg(nr);
}
return 0;
}