Cod sursa(job #591590)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 24 mai 2011 20:42:26
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.54 kb
#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;
}