Pagini recente » Cod sursa (job #2632191) | Cod sursa (job #1467215) | Cod sursa (job #933449) | Cod sursa (job #1598665) | Cod sursa (job #591590)
Cod sursa(job #591590)
#include <iostream>
#include <cstdio>
#define U 100001
#define Liber 0
#define Sters -1
#define Adaugare 1
#define Stergere 2
#define Cautare 3
using namespace std;
long N, H[100001][4];
void Insert (long X)
{
long Key, i;
Key=X%U;
for (i=0; i<4; i++)
{
if ((H[Key][i]==Liber)||(H[Key][i]==Sters))
{
H[Key][i]=X;
break;
}
}
}
void Delete (long X)
{
long Key, i;
Key=X%U;
i=0;
while ((H[Key][i]!=Liber)&&(i<4))
{
if (H[Key][i]==X)
{
H[Key][i]=Sters;
break;
}
i++;
}
}
int Seek (long X)
{
long Key, i;
Key=X%U;
i=0;
while ((H[Key][i]!=Liber)&&(i<4))
{
if (H[Key][i]==X)
{
return 1;
}
i++;
}
return 0;
}
int main()
{
FILE *fin = fopen ("hashuri.in", "r");
FILE *fout = fopen ("hashuri.out", "w");
long Tip=0, X=0, i;
fscanf (fin, "%ld", &N);
for (i=0; i<N; i++)
{
fscanf (fin, "%ld %ld", &Tip, &X);
if (Tip==Adaugare)
{
Insert (X);
}
if (Tip==Stergere)
{
Delete (X);
}
if (Tip==Cautare)
{
if (Seek (X)==0)
{
fprintf (fout, "0\n");
}
else
{
fprintf (fout, "1\n");
}
}
}
fclose (fin);
fclose (fout);
return 0;
}