Pagini recente » Cod sursa (job #3218001) | Cod sursa (job #2910504) | Cod sursa (job #1508804) | Cod sursa (job #2537167) | Cod sursa (job #2620689)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int mod=345643;//un numar prim pentru hash index
vector <int>vhash[mod];//un vector cu 345643 buckets(hash index-uri)
bool cautaElement(int x)
{
int i,index=x%mod;//hash index-ul lui x(bucket-ul)
for(i=0;i<vhash[index].size();i++)//parcurgem bucket-ul
{
if(vhash[index][i]==x)
return 1;
}
return 0;
}
void adauga(int x)
{
int index=x%mod;//hash index-ul lui x(bucket-ul)
if(!cautaElement(x))
vhash[index].push_back(x);//adaugam in bucket x
}
void sterge(int x)
{
int i,index=x%mod;//hash index-ul lui x(bucket-ul)
for(i=0;i<vhash[index].size();i++)//parcurgem bucket-ul
{
if(vhash[index][i]==x)//daca l-am gasit pe x in bucket-ul sau il stergem
{
//facem swap intre x si ultimul element din bucket ca sa il stergem pe x cu pop_back
swap(vhash[index][i],vhash[index][vhash[index].size()-1]);
vhash[index].pop_back();//il stergem pe x
break;
}
}
}
int main()
{
int n,operatie,x;
fin>>n;
for(int i=0;i<n;i++)
{
fin>>operatie>>x;
if(operatie==1)
adauga(x);
if(operatie==2)
if(cautaElement(x))
sterge(x);
if(operatie==3)
fout<<cautaElement(x)<<'\n';
}
return 0;
}