Cod sursa(job #2580890)

Utilizator andaraluca2001Anda Epure andaraluca2001 Data 14 martie 2020 12:26:40
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
const int N=1000006;
const int K=666019;
int val[N], urm[N],lst[K],nr,n,op,a;

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

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

    return false;
}

void adauga(int x)
{
    if(apartine(x)) return;

    int c=x%K;
    val[++nr]=x;
    urm[nr]=lst[c];
    lst[c]=nr;
}

void sterge(int x)
{
    if(apartine(x)==false) return ;
    int c=x%K;
    int p=lst[c];
    if(val[p]==x)
    {
        lst[c]=urm[p];
        return;
    }

    while(urm[p]!=0 && val[urm[p]]!=x) p=urm[p];
    if(urm[p]!=0) urm[p]=urm[urm[p]];

}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>op>>a;
        if(op==1) adauga(a);
        if(op==2) sterge(a);
        if(op==3)
        {
            bool ok=apartine(a);
            if(ok==1) out<<"1\n";
            else out<<"0\n";
        }
    }

    return 0;
}