Cod sursa(job #2581956)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 16 martie 2020 08:29:10
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <iostream>
#include<fstream>
#define mod 666013
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");


struct nod
{
    int info;
    nod *urm;
};
nod *g[mod+1];

void add(nod *&prim, int x)
{
    nod *p = new nod;
    p -> info = x;
    p -> urm = prim;
    prim = p;
}

bool gasit( int x )
{
    int lista = x % mod;
    nod *p;
    for(p = g[lista]; p ; p = p -> urm)
        if(p -> info == x)return 1;
    return 0;
}

void solve1(int x)
{
    int lista = x % mod;
    if(!gasit(x))
        add(g[lista],x);
}

void solve2(int x)
{
    int lista = x % mod;
    nod *p, *ant;
    if(!gasit(x))return;
    //daca e chiar primul
    if(g[lista] -> info == x)
        g[lista] = g[lista] ->urm;
    else
    {
    ant = g[lista];
    //cout << ant<<" ";
    for(p = g[lista]; p ; p = p -> urm)
        {
            if(p -> info == x)
            {

                ant -> urm = p -> urm;
                break;
            }
            else ant = p;
        }
    }

}

void solve3( int x )
{
    if(!gasit(x))fout << 0;
    else fout << 1;
    fout << "\n";
}

int main()
{
    int op, x, n, i;
    fin >> n;
    for(i = 1; i <= n; ++i)
    {
        fin >> op >> x;
        if(op == 1)solve1(x);
        else if(op == 2)solve2(x);
            else solve3(x);

    }
    return 0;
}