Pagini recente » Cod sursa (job #3282156) | Cod sursa (job #186493) | Cod sursa (job #2435973) | Cod sursa (job #38442) | Cod sursa (job #342999)
Cod sursa(job #342999)
#include <cstdio>
#include <vector>
#define MOD 666013
#define S_MAX 655536
using namespace std;
vector<int> L[MOD];
int poz=-1;
char S[S_MAX];
void insert(int x)
{
int nr=x%MOD;
L[nr].push_back(x);
}
int query(int x)
{
int nr=x%MOD;
vector<int>::iterator it;
for (it=L[nr].begin(); it!=L[nr].end() && *it!=x; it++);
return it!=L[nr].end();
}
void erase(int x)
{
int nr=x%MOD;
vector<int>::iterator it;
for (it=L[nr].begin(); it!=L[nr].end() && *it!=x; it++);
if (it!=L[nr].end()) L[nr].erase(it);
}
void read(int &x)
{
x=0;
for (; S[poz]<'0' || S[poz]>'9'; ++poz)
if (poz==S_MAX-1)
{
fread(S,1,S_MAX,stdin);
poz=-1;
}
for (; S[poz]>='0' && S[poz]<='9'; ++poz)
{
x=10*x+S[poz]-'0';
if (poz==S_MAX-1)
{
fread(S,1,S_MAX,stdin);
poz=-1;
}
}
}
int main()
{
int n,op,x;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
fread(S,1,S_MAX,stdin);
read(n);
while (n--)
{
read(op); read(x);
switch (op)
{
case 1:if (!query(x)) insert(x); break;
case 2:if (query(x)) erase(x); break;
case 3:printf("%d\n",query(x)); break;
}
}
return 0;
}