Pagini recente » Cod sursa (job #2815070) | Cod sursa (job #872087) | Cod sursa (job #2261076) | Cod sursa (job #2105586) | Cod sursa (job #754539)
Cod sursa(job #754539)
#include <fstream>
using namespace std;
const long Prim = 666013;
struct TLink;
typedef TLink *PLink;
struct TLink
{
long nr;
PLink Next;
};
PLink HashTable[Prim];
void linkadd(PLink &l,long a)
{
if (l == 0)
{
l = new TLink;
l->nr = a;
l->Next = 0;
return;
}
if (l->nr == a)
{
return;
}
linkadd(l->Next,a);
}
void add(long a)
{
long pos = a % Prim;
linkadd(HashTable[pos],a);
}
void linkdel(PLink &l,long a)
{
if (l == 0)
{
return;
}
if (l->nr == a)
{
PLink x = l;
l = l->Next;
delete x;
return;
}
linkdel(l->Next,a);
}
void del(long a)
{
long pos = a % Prim;
linkdel(HashTable[pos],a);
}
long linkver(PLink &l,long a)
{
if (l == 0)
{
return 0;
}
if (l->nr == a)
{
return 1;
}
return linkver(l->Next,a);
}
long ver(long a)
{
long pos = a % Prim;
return linkver(HashTable[pos],a);
}
int main(void)
{
long N,O,i,a;
fstream fin("hashuri.in",ios::in);
fstream fout("hashuri.out",ios::out);
fin >> N;
for (i = 0;i < N;i += 1)
{
fin >> O >> a;
switch (O)
{
case 1 :
{
add(a);
}
break;
case 2 :
{
del(a);
}
break;
case 3 :
{
fout << ver(a) << "\n";
}
break;
};
}
fin.close();
fout.close();
return 0;
}