Cod sursa(job #2760137)

Utilizator matei.balaur2009Matei Balaur12 matei.balaur2009 Data 23 iunie 2021 12:36:29
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
const int N = 1000001;
const int MOD = 666019;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
int val[N], urm[N], lst[MOD], nr;
bool exista(int x) {
    int c=x%MOD;
    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%MOD;
    if (exista(x)) return;
    val[++nr]=x;
    urm[nr]=lst[c];
    lst[c]=nr;
}

void sterge(int x) {
    int c=x%MOD,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,cer,a;
    in>>n;
    for(int i=0; i<n; i++) {
        in>>cer>>a;
        if (cer==1) adauga(a);
        else if (cer==2) sterge(a);
        else out<<exista(a)<<'\n';

    }
    return 0;
}