Pagini recente » Istoria paginii runda/baraj_spiru | Cod sursa (job #1651929) | Istoria paginii runda/nimi/clasament | Cod sursa (job #2892144) | Cod sursa (job #2432791)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int prime = 1001;
vector<int> hmap[prime];
int hashf(int a)
{
return (a%prime);
}
vector<int>::iterator findAt(int a)
{
int h = hashf(a);
for(vector<int>::iterator it = hmap[h].begin();it<hmap[h].end();it++)
{
if(*it==a)
return it;
}
return hmap[h].end();
}
void add(int a)
{
int h = hashf(a);
if(findAt(a)==hmap[h].end())
hmap[h].push_back(a);
}
void del(int a)
{
int h=hashf(a);
vector<int>::iterator it = findAt(a);
if(it==hmap[h].end())
return;
hmap[h].erase(it);
}
int main()
{
int n;
int c,x;
fin>>n;
while(n--)
{
fin>>c>>x;
if(c==1)
{
add(x);
}
else if(c==2)
{
del(x);
}
else
{
if(findAt(x)!=hmap[x%prime].end())
fout<<1<<'\n';
else
fout<<0<<'\n';
}
}
return 0;
}