Cod sursa(job #1446628)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 2 iunie 2015 13:40:17
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include <iostream>
#include <fstream>
#define Nmax 1299827

using namespace std;

fstream f("hashuri.in", ios::in);
fstream g("hashuri.out", ios::out);


struct nod
{
    long long int info;
    nod *urm;
    nod()
    {
        info = -1;
        urm = NULL;
    }
}*h[Nmax];

inline int hashFunction(long long int x)
{
    return x%Nmax;
}

void in(long long int x)
{
    nod *p = h[hashFunction(x)];
    while(p->urm && p->info != x)
        p = p->urm;
    if(p->info != x)
    {
        nod *nou = new nod;
        nou->info = x;
        nou->urm = NULL;
        p->urm = nou;
    }
}

void out(long long int x)
{
    nod *p = h[hashFunction(x)];
    while(p->urm && p->info != x)
        if(p->urm->info == x)
        {
            nod *r = p->urm;
            p->urm = r->urm;
            delete r;
            return;
        }
}

int cauta(long long int x)
{
    nod *p = h[hashFunction(x)];
    while(p->urm && p->info != x)
        p = p->urm;
    return (p->info == x);
}

int main()
{
    for(int i = 0; i < Nmax; ++i)
    {
        h[i] = new nod;
    }

    int n;
    f>>n;

    for(int i = 0; i < n; ++i)
    {
        int a;
        long long int x;
        f>>a>>x;
        if(a == 1)
            in(x);
        if(a == 2)
            out(x);
        if(a == 3)
            g<<cauta(x)<<'\n';
    }

    return 0;
}