Cod sursa(job #2107519)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 17 ianuarie 2018 13:50:51
Problema Hashuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int MOD=99989;
struct nod
{
    int info;
    nod *next;
} *h[MOD-1];
int verif (int x)
{
    nod *c;
    c=new(nod);
    if(h[x%MOD])
    {
        c=h[x%MOD];
        while(c->info!=x && c->next!=0)
            c=c->next;
        if(c->info==x)
            return 1;
    }
    return 0;
}
void sterge (int x)
{
    nod *c;
    c=new(nod);
    if(h[x%MOD]!=0)
    {
        c=h[x%MOD];
        nod *d;
        d=new(nod);
        d=c;
        while(c->info!=x && c->next!=0)
            d=c,c=c->next;
        if(c->info==x)
        {
            if(c->next==NULL)
                {
                    if(d==c)
                        c=0, h[x%MOD]=0;
                    else
                        d->next=NULL;
                }
            else
                c->next=c->next->next;
        }
    }
}
void adaug(int x)
{
    if(h[x%MOD]==0)
    {
        nod *c;
        c=new(nod);
        c->info=x;
        c->next=0;
        h[x%MOD]=c;
    }
    else
    {
        nod *c;
        c=new(nod);
        c=h[x%MOD];
        while(c->next!=0)
            c=c->next;
        nod *d;
        d=new(nod);
        d->info=x;
        d->next=0;
        c->next=d;
    }
}
int main()
{
    int i, op, x, n;
    f>>n;
    for(i=1;i<=n;++i)
    {
        f>>op>>x;
        if(op==1)
            if(!verif(x))
            {
                adaug(x);
            }
        if(op==2)
          sterge(x);
        if(op==3)
            if(verif(x))
                g<<1<<'\n';
            else
                g<<0<<'\n';
    }
    /*for (i=0;i<MOD;++i)
       if(h[i])
            cout<<h[i]->info<<endl;*/
    f.close();
    g.close();
}