Cod sursa(job #2627271)

Utilizator Albert_GAlbert G Albert_G Data 10 iunie 2020 12:12:33
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;

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

const int M = 666019;
const int N = 1e6+1;

int v[N], lst[M], urm[N],nr=0;

bool apartine(int x)
{
    int c=x % M;
    for(int p=lst[c];p!=0;p=urm[p])
    {
        if(v[p]==x)
            return true;
    }
    return false;
}


void adaugare(int x)
{
    if(apartine(x))
        return;
    int c= x % M;
    v[++nr] = x;
    urm[nr] = lst[c];
    lst[c] = nr;
}

void stergere(int x)
{
    int c= x%M, p=lst[c];
    while(p!=0 && v[p]!=x)
    {
        p=urm[p];
    }
    if(p!=0)
    {
        v[p]=v[lst[c]];
        lst[c]=urm[lst[c]];
    }
}

int main()
{
    int n;
    in>>n;
    for(int i=0;i<n;i++)
    {
        int cer,x;
        in>>cer>>x;
        if(cer==1)
        {
            adaugare(x);

        }
        else if(cer==2)
        {
            stergere(x);
        }
        else if(cer==3)
        {
            out<<apartine(x)<<'\n';
        }
    }
    return 0;
}