Cod sursa(job #1326772)

Utilizator Toast97Calin Farcas Toast97 Data 25 ianuarie 2015 22:53:46
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.66 kb
#include <fstream>

using namespace std;

ifstream f ("hashuri.in");
ofstream g ("hashuri.out");

const int p = 1000003;

struct nod
{
    int info;
    nod *adr;
} *v[p-1];

nod *e_in_lista (int h, int nr)
{
    nod *p;
    p = v[h];

    if (!p)
        return NULL;

    if (p -> info == nr)
            return p;

    while (p -> adr)
    {
        if (p -> adr -> info == nr)
            return p;

        p = p -> adr;
    }

    return NULL;
}

void adauga_in_lista (int h, int nr)
{
    nod *c;
    c = new nod;
    c -> info = nr;
    c -> adr = v[h];

    v[h] = c;
}

void sterge_din_lista_1 (nod *d)
{
    nod *s;
    s = d -> adr;

    d -> adr = s -> adr;
    delete s;
}

void sterge_din_lista_2 (int h)
{
    nod *c;
    c = v[h];
    v[h] = v[h] -> adr;
    delete c;
}

int main()
{
    int n, op, x, H;
    nod *b;

    f >> n;

    for (int i = 1; i <= n; i ++)
    {
        f >> op >> x;

        H = x % p;

        if (op == 1)
            adauga_in_lista (H, x);
            else
                if (op == 2)
            {
                b = e_in_lista (H, x);
                if (b)
                {
                    if (v[H] -> info == x)
                        sterge_din_lista_2 (H);
                    else
                        sterge_din_lista_1 (b);
                }
            }
            else
            {
                b = e_in_lista (H, x);
                if (b)
                    g << 1;
                else
                    g << 0;

                g << '\n';
            }
    }

    f.close ();
    g.close ();
    return 0;
}