Cod sursa(job #2581059)

Utilizator AlexBosneag26Bosneag Alexandru AlexBosneag26 Data 14 martie 2020 14:46:36
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

const int M = 666019, N = 1000001;

int val[N], urm[N], lst[N], nr;

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

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

int exista(int x)
{
    int categ = x % M;
    for(int p = lst[categ]; p != 0; p = urm[p])
    {
        if(val[p] == x)
            return 1;
    }
    return 0;
}

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

int main()
{
    int n, x, y;
    in >> n;
    for(int i = 1; i <= n; i++)
    {
        in >> x >> y;
        if(x == 1)
            adauga(y);
        else if(x == 2)
            sterge(y);
        else out << exista(y) << "\n";
    }
    return 0;
}