Pagini recente » Cod sursa (job #1013401) | Cod sursa (job #668619) | Cod sursa (job #2948610) | Cod sursa (job #1205428) | Cod sursa (job #2615229)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
class Hash
{
private:
vector<int>h[666013];
//int nmax;
public:
// Hash(int val = 666013):Nmax(val){
//
// }
// ~Hash(){
// h.clear();
// }
bool find_value(int nr_cautat)
{
int val_hash = nr_cautat%666013;
vector<int>::iterator it;
for(it = h[val_hash].begin(); it!= h[val_hash].end(); ++it)
{
if(*it == nr_cautat)
{
return true;
}
}
return false;
}
void erase_value(int nr_de_sters)
{
int val_hash = nr_de_sters%666013;
vector<int>::iterator it;
for(it = h[val_hash].begin(); it!= h[val_hash].end(); it++)
{
if(*it == nr_de_sters)
{
h[val_hash].erase(it);
return;
}
}
}
void insert_value(int nr)
{
if(find_value(nr) == false)
{
int val_hash = nr%666013;
h[val_hash].push_back(nr);
}
}
}H;
int main()
{
int n;
int nr_op, x;
in>>n;
while(n)
{
in>>nr_op>>x;
switch(nr_op)
{
case 1://operatia de tipul 1: se adauga elementul x la multime
//cout<<1;
H.insert_value(x);
break;
case 2://operatia de tipul 2: se sterge elementul x
//cout<<2;
H.erase_value(x);
break;
case 3://operatia de tipul 3: returneaza 1 daca si numai daca x este in multime, iar in caz contrar returneaza 0.
//cout<<3;
if(H.find_value(x)== true)
out<<1<<"\n";
else
out<<0<<"\n";
break;
default:
out<<"operatie necunoscuta";
break;
}
n--;
}
in.close();
out.close();
return 0;
}