Pagini recente » Cod sursa (job #1648017) | Cod sursa (job #1358582) | Cod sursa (job #1691529) | Cod sursa (job #720511) | Cod sursa (job #1974121)
#include <iostream>
#include <fstream>
#include <cstring>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <vector>
#include <stack>
#include <list>
#include <algorithm>
#include <limits.h>
#include <queue>
#include <utility>
#include <unordered_set>
using namespace std;
struct hashes{
int n = 1071;
vector<int> arr[1072];
};
hashes createHashes(){
hashes hs;
return hs;
}
vector<int>::iterator searchHash(hashes & hs, int x){
int mod = x % hs.n;
for(auto it = hs.arr[mod].begin(); it != hs.arr[mod].end(); it++){
if(*it == x){
return it;
}
}
return hs.arr[mod].end();
}
void insertHash(hashes & hs, int x){
int mod = x % hs.n;
if(searchHash(hs, x) == hs.arr[mod].end()){
hs.arr[mod].push_back(x);
}
}
void removeHash(hashes &hs, int x){
int mod = x % hs.n;
vector<int>::iterator it = searchHash(hs, x);
if(it != hs.arr[mod].end()){
hs.arr[mod].erase(it);
}
}
/////
ifstream f("hashuri.in");
ofstream g("hashuri.out");
////
int main(){
hashes hs = createHashes();
int n;
f >> n;
int opt = -1;
int x = -1;
for(int i = 0; i < n; i++){
f >> opt;
f >> x;
switch(opt){
case 1:
insertHash(hs, x);
break;
case 2:
removeHash(hs, x);
break;
case 3:
int mod = x % hs.n;
vector<int>::iterator it = searchHash(hs, x);
g << (it != hs.arr[mod].end()) << endl;
}
}
return 0;
}