Pagini recente » Monitorul de evaluare | Cod sursa (job #1175812) | Cod sursa (job #2934313) | Cod sursa (job #2764015) | Cod sursa (job #950784)
Cod sursa(job #950784)
#include <fstream>
#include <list>
using namespace std;
#define mod1 666013
#define mod2 123456
list<int> v1[mod1];
list<int> v2[mod2];
list<int>::iterator find1(int x)
{
int b=x%mod1;
list<int>::iterator it;
for(it=v1[b].begin();it!=v1[b].end();it++)
if(*it==x)
break;
return it;
}
list<int>::iterator find2(int x)
{
int b=x%mod2;
list<int>::iterator it;
for(it=v2[b].begin();it!=v2[b].end();it++)
if(*it==x)
break;
return it;
}
void insert(int x)
{
int b1=x%mod1;
int b2=x%mod2;
if(find1(x)==v1[b1].end() && find2(x)==v2[b2].end())
{
if(v1[b1].size()<v2[b2].size())
v1[b1].push_back(x);
else
v2[b2].push_back(x);
}
}
void del(int x)
{
int b1=x%mod1;
int b2=x%mod2;
list<int>::iterator it1=find1(x);
list<int>::iterator it2=find2(x);
if(it1!=v1[b1].end())
v1[b1].erase(it1);
if(it2!=v2[b2].end())
v2[b2].erase(it2);
}
int main()
{
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int n,cod,x,i;
fin>>n;
for(i=0;i<n;i++)
{
fin>>cod>>x;
if(cod==1)
insert(x);
else if(cod==2)
del(x);
else
{
if(find1(x)!=v1[x%mod1].end() || find2(x)!=v2[x%mod2].end())
fout<<"1\n";
else
fout<<"0\n";
}
}
fin.close();
fout.close();
//system("PAUSE");
return 0;
}