Cod sursa(job #2588832)

Utilizator victor1306Victor Mihaila victor1306 Data 25 martie 2020 15:26:33
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream cin("hashuri.in");
ofstream cout("hashuri.out");
const int N=1000001;
const int M=666019;
int val[N], urm[N], lst[M], nr;
bool apartine(int x){
    int c=x%M;
    for(int p=lst[c];p!=0;p=urm[p]){
        if(val[p]==x){
            return true;
        }
    }
    return false;
}
void adauga(int x){
    int c=x%M;
    if(apartine(x)){
        return;
    }
    val[++nr]=x;
    urm[nr]=lst[c];
    lst[c]=nr;
}
void sterge(int x){
    int c=x%M, p=lst[c];
    while(p!=0&&val[p]!=x){
        p=urm[p];
    }
    if(p!=0){
        val[p]=val[lst[c]];
        lst[c]=urm[lst[c]];
    }
}
int main()
{
    int n,c,x;
    cin>>n;
    for(int i=1;i<=n;i++){
            cin>>c>>x;
       if(c==1){
        adauga(x);
       }
        if(c==2){
            sterge(x);
        }
        if(c==3){
            cout<<apartine(x)<<'\n';
        }
    }
    return 0;
}