Pagini recente » Cod sursa (job #2978701) | Cod sursa (job #2919536) | Cod sursa (job #3227446) | Cod sursa (job #1912994) | Cod sursa (job #3277715)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
// alegi BASE si MOD incat sa treaca testele, sa fie prime, base > 10 si prim si MOD prim, MOD nu foarte mare
const int BASE = 11;
const int MOD = 666013;
// vector de bucketuri, bucketul este (numar din baza presupusa convertita in baza 10) % mod;
vector<int> buckets[MOD + 5];
int hasher(int number){
int hashed_number = 0;
int coefficient = 1;
while (number){
hashed_number += (number % 10) * coefficient;
coefficient *= BASE;
hashed_number = hashed_number % MOD;
number /= 10;
}
return hashed_number;
}
void solve(){
int n;
fin >> n;
for (int i = 1; i <= n; i++){
int op, number;
fin >> op >> number;
int hashed_nr = hasher(number);
if (op == 1) {
buckets[hashed_nr].push_back(number);
} else if (op == 2){
for (int i = 0; i < buckets[hashed_nr].size(); i++){
if (buckets[hashed_nr][i] == number)
buckets[hashed_nr].erase(buckets[hashed_nr].begin()+i);
}
} else {
bool found = false;
for (int i = 0; i < buckets[hashed_nr].size(); i++){
if (buckets[hashed_nr][i] == number) {
found = true;
break;
}
}
if (found){
fout << 1 << '\n';
} else {
fout << 0 << '\n';
}
}
}
}
int main(){
solve();
return 0;
}