Pagini recente » Cod sursa (job #1068299) | Cod sursa (job #380295) | Cod sursa (job #2241751) | Cod sursa (job #2798647) | Cod sursa (job #2746361)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int prim = 666013;
vector <int> v[prim];
// adaugare
void op1(int nr){
int bucket;
// adaugam numarul (nr) intr un bucket in functie de restul impartirii lui la nr prim
bucket = nr % prim;
v[bucket].push_back(nr);
}
// stergere
void op2( int nr){
int bucket = nr % prim;
// parcurgem bucket-ul in care se afla nr
vector <int>::iterator it;
for(it = v[bucket].begin(); it != v[bucket].end(); it++){
if( *it == nr){
//daca gasim nr in bucket
//ne oprim din cautare
break;
}
}
if( it != v[bucket].end()){
v[bucket].erase(it);
}
}
// returnare
void op3(int nr){
int bucket = nr % prim;
vector <int> ::iterator it;
for(it = v[bucket].begin(); it != v[bucket].end(); it++){
if( *it == nr) {
// daca gasim nr in bucket ne oprim
break;
}
}
if( it != v[bucket].end()) // daca apare in bucket
fout << 1 << "\n";
else
fout << 0 << "\n";
}
int main(){
int N; // operatii
int op, nr;
fin>>N;
for(int i = 0; i < N; i++){
fin >> op >> nr;
// fout << op << " " << nr << "\n";
if( op == 1) op1(nr);
else
if( op == 2) op2(nr);
else
if(op == 3) op3(nr);
}
return 0;
}