Cod sursa(job #1960249)

Utilizator amaliarebAmalia Rebegea amaliareb Data 10 aprilie 2017 12:11:29
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#define mod 666013

using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n,i,j,val[1000001],urm[1000001],lst[mod+5],nr[1000001],nh,op,x;

int cauta(int x)
{
    int r=x%mod,p;
    p=lst[r];
    while(p!=0)
    {
        if(val[p]==x) return p;
        p=urm[p];
    }
    return 0;
}

void adauga(int x)
{
    int p=cauta(x);
    if(p!=0)
    {
        nr[p]++;
        return;
    }
    int r=x%mod;
    ++nh;
    val[nh]=x;
    nr[nh]=1;
    urm[nh]=lst[r];
    lst[r]=nh;
}

void sterge(int x)
{
    int p=lst[x%mod];
    if(val[p]==x)
    {
        nr[p]--;
        if(nr[p]==0) lst[x%mod]=urm[p];
        return;
    }
    while(urm[p]!=0 && val[urm[p]]!=x) p=urm[p];
}

int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>op>>x;
        if(op==1)
        {
            adauga(x);
        }
        else if(op==2)
        {
            sterge(x);
        }
        else if(op==3)
        {
            if(cauta(x)) g<<1<<'\n';
            else g<<0<<'\n';
        }
    }
    return 0;
}