Cod sursa(job #2198069)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 23 aprilie 2018 15:46:29
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int N=1000001,R=666019;
int lst[N],val[N],urm[N],nr,n;
bool cauta(int x){
    int r=x%R,p;
    p=lst[r];
    while(p!=0){
        if(val[p]==x)
          return true;
        p=urm[p];
    }
    return false;
}
void adauga(int x){
    if(cauta(x))
        return;
    int r=x%R,p;
    val[++nr]=x;
    urm[nr]=lst[r];
    lst[r]=nr;
}
void sterge(int x){
    int r=x%R,p;
    p=lst[r];
    if(val[p]==x){
        lst[r]=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()
{
    int k,vl;
    f>>n;
    for(int i=1;i<=n;i++){
        f>>k>>vl;
        if(k==1)
           adauga(vl);
        if(k==2)
           sterge(vl);
        if(k==3){
           if(cauta(vl))
              g<<1<<'\n';
            else
              g<<0<<'\n';
        }
    }
    return 0;
}