Pagini recente » Cod sursa (job #1320395) | Cod sursa (job #2971099) | Cod sursa (job #698608) | Cod sursa (job #2675001) | Cod sursa (job #3128888)
#include <iostream>
#include <vector>
#include <list>
#include <fstream>
using namespace std;
int p = 666013;
class HashTable{
vector<vector<int>> v;
int findVal(int, int);
public:
HashTable();
void insert(int);
void del(int);
int find(int);
friend ostream& operator<<(ostream& out, const HashTable& ht);
};
//ostream& operator<<(ostream& out, const HashTable& ht){
// cout<<"AFISARE HASHTABLE: "<<endl;
// for(int i = 1; i<ht.v.size(); i++){
// list<int>::iterator j;
// for(j = ht.v[i].begin(); j != ht.v[i].end(); j++){
// cout<<*j<<" ";
// }
// cout<<endl;
// }
// cout<<"==================="<<endl;
// return out;
//}
HashTable::HashTable(){
this->v.resize(666013);
}
int HashTable::findVal(int val, int pos){
if(!this->v[pos].empty()){
int i;
int k = 0;
for(i = 0; i < this->v[pos].size(); i++){
if(this->v[pos][i]==val) return k;
k+=1;
}
}
return -1;
}
int HashTable::find(int val){
int k = val%p;
if(findVal(val, k) == -1) return 0;
return 1;
}
void HashTable::insert(int val){
int k = val%p;
if(findVal(val, k) == -1){
this->v[k].push_back(val);
}
}
void HashTable::del(int val){
int k = val%p, l = findVal(val, k);
if(l != -1){
this->v[k].erase(this->v[k].begin() + l);
}
}
int main(){
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n, a, b;
f>>n;
HashTable ht;
while(n>0){
f>>a>>b;
cout<<"N: "<<n<<endl;
switch(a){
case 1: {
ht.insert(b);
break;
}
case 2: {
ht.del(b);
break;
}
case 3: {
g<<ht.find(b)<<endl;
break;
}
default: {
break;
}
}
n--;
}
}