Pagini recente » Borderou de evaluare (job #1001488) | Cod sursa (job #2723126) | Cod sursa (job #344001) | Cod sursa (job #2756290) | Cod sursa (job #2886697)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int mod=666013;
///consideram functia de hash H(x)=x modulo P si vom retine P liste simplu inlantuite
///indexate de la 0 la P-1, unde lista i va retine toate acele chei x din multime
///care au H(x)=i, sau, altfel spus, toate numerele din multime care dau restul i la
///impartirea cu P
int N;
vector<int> g[mod];
void insertHash(int val){
int lista=val%mod;
for(auto x: g[lista]){
if(x==val)
return;
}
g[lista].push_back(val);
}
void eraseHash(int val){
int lista=val%mod;
for(auto it=g[lista].begin();it!=g[lista].end();it++){
if(*it==val){
g[lista].erase(it);
return;
}
}
}
bool findValue(int val){
int lista=val%mod;
for(auto x: g[lista]){
if(x==val)
return 1;
}
return 0;
}
int main()
{
fin>>N;
int tip, x;
while(N--){
fin>>tip>>x;
if(tip==1){
insertHash(x);
}
else if(tip==2){
eraseHash(x);
}
else{
fout<<findValue(x)<<'\n';
}
}
fin.close();
fout.close();
return 0;
}