Cod sursa(job #1368694)

Utilizator dragos_musanMusan Dragos dragos_musan Data 2 martie 2015 19:28:19
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

using namespace std;

const int K = 666019, N = 1000001;

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

int lst[K], val[N], urm[N], n;

void adauga(int x)
{
    int r = x%K;
    n++;
    val[n] = x;
    urm[n] = lst[r];
    lst[r] = n;
}

bool cauta(int x)
{
    int p = lst[x%K];
    while (p != 0)
    {
        if (val[p] == x)
            return 1;
        p = urm[p];
    }
    return 0;
}

void sterge(int x)
{
    int r = x%K, p;
    p = lst[r];
    if (x == val[p])
    {
        lst[r] = urm[p];
        return;
    }
    while (urm[p] != 0)
    {
        if (val[urm[p]] == x)
        {
            urm[p] = urm[urm[p]];
            return;
        }
        p = urm[p];
    }
}

int main()
{
    int m,x,y;

    f>>m;

    for(int i = 1; i<=m; i++)
    {
        f >> x >> y;

        if(x == 1)
        {
            adauga(y);
        }
        if(x == 2)
        {
            sterge(y);
        }
        if(x == 3)
            g << cauta(y) << '\n';
    }
    return 0;
}