Cod sursa(job #2899081)

Utilizator SabrinaGiuliaMacoveiciuc Sabrina Giulia SabrinaGiulia Data 7 mai 2022 18:17:33
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX=1000006, MOD = 666013;
int val[NMAX], start[NMAX], urm[NMAX];
int nr;

bool exista(int x)
{
    int c = x % MOD, j;
    for(j = start[c]; j != 0; j = urm[j])
    {
        if(val[j] == x)
        {
            return true;
        }
    }
    return false;
}

void adauga(int x)
{
    int c = x % MOD;
    if(exista(x))
    {
        return;
    }
    val[++nr] = x;
    urm[nr] = start[c];
    start[c] = nr;
}

void sterge(int x)
{
    int c = x % MOD, p = start[c];
    while(p != 0 and val[p] != x)
    {
        p = urm[p];
    }
    if(p != 0)
    {
        val[p] =  val[start[c]];
        start[c] = urm[start[c]];
    }
}

int main()
{
    int n;
    f >> n;
    while(n--)
    {
        int tip, x;
        f >> tip >> x;
        switch(tip)
        {
        case 1:
            adauga(x);
            break;
        case 2:
            sterge(x);
            break;
        case 3:
            if(exista(x))
            {
                g << 1 << "\n";
            }
            else{
                g << 0 << "\n";
            }
            break;
        }
    }

    return 0;
}