Pagini recente » Lost | Diferente pentru utilizator/rares31100 intre reviziile 6 si 8 | Diferente pentru problema/portale intre reviziile 75 si 76 | Pastila | Cod sursa (job #2834319)
#include <fstream>
#include <vector>
using namespace std;
const int MOD = 12289;
vector < int > H[MOD];
inline static void Add(int value){
int key = value % MOD;
for(auto x: H[key])
if(x == value)
return ;
H[key].push_back(value);
}
inline static void Erase(int value){
int key = value % MOD;
int len = (int) H[key].size();
for(int i = 0; i < len; ++i)
if(value == H[key][i]){
H[key][i] = H[key][len - 1];
H[key].pop_back();
return ;
}
}
inline bool Find(int value){
int key = value % MOD;
for(auto x: H[key])
if(x == value)
return true;
return false;
}
int main(){
ifstream cin("hashuri.in");
ofstream cout("hashuri.out");
int Queries, op, x;
cin >> Queries;
while(Queries--){
cin >> op >> x;
if(op == 1)
Add(x);
else if(op == 2)
Erase(x);
else
cout << Find(x) << '\n';
}
return 0;
}