Pagini recente » Cod sursa (job #1799605) | Cod sursa (job #3290250) | Cod sursa (job #2523769) | Cod sursa (job #1054350) | Cod sursa (job #1142489)
#include<fstream>
#include<vector>
#define Nmax (2<<20)-1
using namespace std;
vector<int>v[Nmax];
int hashing(int a){
return a%Nmax;
}
int find(int a){
int index = hashing(a);
for (vector<int>::iterator j = v[index].begin(); j != v[index].end(); j++){
if (*j == a)
return 1;
}
return 0;
}
void insert(int a){
int index = hashing(a);
if (find(a) ==0)
v[index].push_back(a);
}
void remove(int a){
int index = hashing(a);
bool gasit = false;
if (!v[index].empty())
for (vector<int>::iterator j = v[index].begin(); j != v[index].end(); j++){
if (*j == a){
*j = v[index].back();
gasit = true;
}
}
if (gasit){
v[index].pop_back();
}
}
int main(){
int n, comanda, x;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
fin >> n;
for (int i = 0; i < n; i++){
fin >> comanda>>x;
switch (comanda){
case 1: {insert(x); break; }
case 2: {remove(x); break; }
case 3: {fout<<find(x)<<" "; break; }
}
}
system("pause");
return 0;
}