Cod sursa(job #2745779)

Utilizator Virgil993Virgil Turcu Virgil993 Data 26 aprilie 2021 23:42:21
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.8 kb
#include <iostream>
#include<bits/stdc++.h>
#include<fstream>

using namespace std;

struct nod
{
    long long valoare;
    nod* urm;
};

nod* v[666013];
nod* ult[666013];

int main()
{
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    long long n,nr;
    int k;
    f>>n;
    for(long long i=0;i<666013;i++)
    {
        v[i] = new nod();
        ult[i] = new nod();
        v[i]->valoare = -1;
        v[i]->urm = NULL;
        ult[i] = v[i];
    }
    for(long long i=0;i<n;i++)
    {
        f>>k;
        f>>nr;
        if(k==1)
        {
            int ok = 1;
            nod* aux ;
            aux = new nod();
            aux = v[nr%666013];
            while(aux!=NULL && ok ==1)
            {
                if(aux->valoare == nr)
                    ok = 0;
                else
                {
                  aux = aux->urm;
                }
            }
            if(ok == 1)
            {
                delete aux;
                aux = new nod();
                aux-> valoare = nr;
                aux -> urm = NULL;
                ult[nr%666013] -> urm = aux;
                ult[nr%666013] = aux;
            }
            delete aux;
        }
        if(k==2)
        {
            nod* aux;
            long long rest;
            rest = nr%666013;
            aux = new nod();
            aux = v[rest];
            if(aux -> valoare == nr)
            {
                v[rest] = v[rest] -> urm;
                delete aux;
            }
            else
            {
                int ok = 0;
                while(ok == 0 && aux ->urm != NULL)
                {
                    if(aux -> urm -> valoare == nr)
                        ok = 1;
                    else
                        aux = aux -> urm;
                }
                if(ok == 1)
                {
                    nod* aux2;
                    aux2 = new nod();
                    aux2 = aux -> urm -> urm;
                    delete aux -> urm;
                    aux -> urm = new nod();
                    aux -> urm = aux2;
                    delete aux2;

                }
                delete aux;

            }
        }
        if(k==3)
        {
            nod* aux;
            long long rest;
            rest = nr%666013;
            aux = new nod();
            aux = v[rest];
            int ok = 0;
            while(aux!= NULL && ok ==0)
            {
                if(aux -> valoare == nr)
                {
                    g<<1<<endl;
                    ok = 1;
                }
                else
                    aux = aux-> urm;
            }
            if(ok == 0)
                g<<0<<endl;
            delete aux;
        }

    }

    return 0;
}