Pagini recente » Cod sursa (job #2494662) | Istoria paginii runda/round_2 | Cod sursa (job #2707380) | Cod sursa (job #2266273) | Cod sursa (job #641702)
Cod sursa(job #641702)
#include <stdio.h>
#include <vector>
using namespace std;
#define mod 670013
int n;
vector<int> v[mod];
vector<int>::iterator cauta(int);
void add(int);
void erase(int);
int main (void)
{
int i,op,x;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&op,&x);
if(op==1) // adauga
add(x);
else if(op==2) // sterge
erase(x);
else if(op==3) // return 1 sau 0 daca x exista
printf("%d\n",cauta(x)!=v[x%mod].end());
}
return 0;
}
void add(int x)
{
int i=x%mod;
if(cauta(x)==v[i].end()) v[i].push_back(x);
}
void erase(int x)
{
int i=x%mod;
vector<int>::iterator it=cauta(x);
if(it!=v[i].end()) v[i].erase(it);
}
vector<int>::iterator cauta(int x)
{
int i=x%mod;
vector<int>::iterator it;
for(it=v[i].begin(); it!=v[i].end(); ++it)
if(*it == x) return it;
return v[i].end();
}