Pagini recente » Cod sursa (job #524278) | Cod sursa (job #2960982) | Cod sursa (job #2708917) | Cod sursa (job #440867) | Cod sursa (job #2740874)
#include <iostream>
#include <fstream>
std::ifstream f("hashuri.in");
std::ofstream g("hashuri.out");
const int prim1 = 16383089, prim2 = 16379731, prim3 = 16383007;
int v[prim2];
void add(int x)
{
int i = 0, poz = x % prim2;
while(true)
{
if (v[poz] == x)
break;
else if (v[poz] == 0 or v[poz] == -1)
{
v[poz] = x;
break;
}
else
{
i++;
poz = (x + i * (x / prim2 + 1)) % prim2;
}
}
}
void sterge(int x)
{
int i = 0, poz = x % prim2;
while (true)
{
if (v[poz] == x)
{
v[poz] = -1;
break;
}
else if (v[poz] == 0 or v[poz] == -1)
break;
else
{
i++;
poz = (x + i * (x / prim2 + 1)) % prim2;
}
}
}
bool apartine(int x)
{
int i = 0, poz = x % prim2;
while (true)
{
if (v[poz] == x)
return 1;
else if (v[poz] == 0)
return 0;
else
{
i++;
poz = (x + i * (x / prim2 + 1)) % prim2;
}
}
}
int main()
{
int nrop;
f >> nrop;
for (int i = 0; i < nrop; i++)
{
int op, param;
f >> op >> param;
switch (op)
{
case 1:
{
add(param);
}
break;
case 2:
{
sterge(param);
}
break;
case 3:
{
g << apartine(param) << "\n";
}
}
}
return 0;
}