Pagini recente » Cod sursa (job #3151082) | Cod sursa (job #2663759) | Cod sursa (job #2972986) | Cod sursa (job #2935965) | Cod sursa (job #2403284)
#include<bits/stdc++.h>
using namespace std;
struct hashuri
{
vector<int> elem;
} v[666019];
int hashh (int val)
{
int nr=0;
while (val)
{
nr=nr*5+val%10;
nr=nr%666013;
val/=10;
}
return nr;
}
/**
la v[i] tineti elementele cu hashul egal cu i
*/
int findd (int hashval,int nr)
{
for (int i=0; i<v[hashval].elem.size(); ++i)
{
if(v[hashval].elem[i]==nr) return i;
}
return -1;
}
int adauga (int nr)
{
int pos=findd(hashh(nr),nr);
if(pos==-1) {v[hashh(nr)].elem.push_back(nr);}
///verifica daca la adresa din vector a hashului lui nr se afla nr
}
void del (int nr)
{
int pos=findd(hashh(nr),nr),hashval=hashh(nr);
if(pos!=-1)
{
v[hashval].elem.erase(v[hashval].elem.begin()+pos);
}
}
int main()
{
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int n,o,x;
fin>>n;
for(int i=0; i<n; i++)
{
fin>>o>>x;
if(o==1)
{
adauga(x);
}
else
{
if(o==2)
{
del(x);
}
else
{
if(o==3)
{
int pos=findd(hashh(x),x);
if(pos!=-1)
{
fout<<"1"<<"\n";
}
else
{
fout<<"0\n";
}
}
}
}
}
return 0;
}