Pagini recente » Cod sursa (job #2166251) | Cod sursa (job #843761) | Cod sursa (job #579455) | Cod sursa (job #1506122) | Cod sursa (job #787312)
Cod sursa(job #787312)
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
#define NMAX 611953 // al 50 000-lea nr prim
using namespace std;
list<int>::iterator Hsearch(vector<list<int> > &H, int num)
{
list<int>::iterator it = H[num % NMAX].begin();
while (it != H[num % NMAX].end()) {
if (*it == num)
return it;
it++;
}
return H[num % NMAX].end();
}
void Hinsert(vector<list<int> > &H, int num)
{
if (Hsearch(H, num) == H[num % NMAX].end())
H[num % NMAX].push_front(num);
}
void Hdelete(vector<list<int> > &H, int num)
{
list<int>::iterator it = Hsearch(H, num);
if (it != H[num % NMAX].end())
H[num % NMAX].erase(it);
}
int main()
{
fstream f("hashuri.in", ios::in), g("hashuri.out", ios::out);
vector<list<int> > H;
H.resize(NMAX);
int N, op, num;
list<int>::iterator it;
f >> N;
while (f >> op >> num) {
switch (op) {
case 1:
Hinsert(H, num);
break;
case 2:
Hdelete(H, num);
break;
case 3:
it = Hsearch(H, num);
if (it != H[num % NMAX].end())
g << 1 << '\n';
else
g << 0 << '\n';
break;
default:
break;
}
}
f.close();
g.close();
return 0;
}