Pagini recente » Cod sursa (job #2262545) | Cod sursa (job #437924) | Cod sursa (job #991855) | Istoria paginii runda/ofjaso20165 | Cod sursa (job #1996132)
#include <fstream>
#include <vector>
#define M 666013
using namespace std;
vector<int> v[666100];
int m;
int hsh(int x)
{
double y = 0.6180339887;
double xy = (double)x * y;
xy -= (int) xy;
double ans = xy * M;
return (int) ans;
}
vector<int> :: iterator find_val(int x)
{
int lst = hsh(x);
for (vector<int> :: iterator it = v[lst].begin(); it != v[lst].end(); ++it)
if(*it == x)
return it;
return v[lst].end();
}
void insert_val(int x)
{
int lst = hsh(x);
if(find_val(x) == v[lst].end())
v[lst].push_back(x);
}
void erase_val (int x)
{
int lst = hsh(x);
vector<int>::iterator it = find_val(x);
if(it != v[lst].end())
v[lst].erase(it);
}
int main()
{
ifstream fin ("hashuri.in");
ofstream fout ("hashuri.out");
fin >> m;
while(m--){
int test, x;
fin >> test >> x;
switch(test){
case 1:
insert_val(x);
break;
case 2:
erase_val(x);
break;
case 3:
fout << (find_val(x) != v[hsh(x)].end()) << "\n";
break;
}
}
fin.close();
fout.close();
return 0;
}