Cod sursa(job #1809262)

Utilizator AndreiDumitrescuAndrei Dumitrescu AndreiDumitrescu Data 18 noiembrie 2016 19:24:06
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

int lst[666019], val[1000000], urm[1000000] , nr, k = 666019;

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

bool exista(int x)
{
    int r = x % k, p;
    p = lst[r];
    while(p != 0)
    {
        if(val[p] == x)
            return true;
        p = urm[p];
    }
    return false;
}

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

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

int main()
{
    int n, i , x , y ,z;
    f >> n;
    for(i = 1; i <= n ; i++)
    {
        f >> x >> y;
        if(x == 1)
            adauga(y);
        if(x == 2)
            sterge(y);
        if(x == 3)
        {
            if(exista(y))
                g << 1 << '\n';
            else
                g << 0 << '\n';
        }

    }
}