Cod sursa(job #1809285)

Utilizator raresm44vasile rares raresm44 Data 18 noiembrie 2016 19:49:05
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
const long k=666019;
int val[1000000],urm[1000000],lst[k],n,m,a,nr;
bool exista(int x)
{
    int r=x%k,p;
    p=lst[r];
    while(p!=0)
    {
        if(val[p]==x)
            return true;
        p=urm[p];
    }
    return false;
}

void adauga(int x)
{
    int r=x%k,p;
    nr++;
    val[nr]=x;
    urm[nr]=lst[r];
    lst[r]=nr;
}

void sterg(int x)
{
    int r=x%k,p;
    p=lst[r];
    if(val[p]==r)
    {
        lst[r]=urm[p];
        return;
    }
    while(urm[p]!=0)
        if(val[urm[p]]==x)
            urm[p]=urm[urm[p]];
        else
            p=urm[p];
}
int main()
{

    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>a>>m;
        bool var=exista(m);
        if(a==1){
            if(!var)
                adauga(m);
        }
        else if(a==2){
            if(var)
                sterg(m);
        }
        else if(var)
            g<<"1\n";
        else
            g<<"0\n";


    }
    cout << "Hello world!" << endl;
    return 0;
}