Cod sursa(job #1051696)

Utilizator WyvernFMI Stanescu Leonard Wyvern Data 10 decembrie 2013 13:53:44
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("hashuri.in");
ofstream fo("hashuri.out");

struct nod {
int val;
nod *next;
};

nod *v[44722];
int n,t,x;

void adauga(int a){
    int h=a%44722;
    nod *p=new nod;
    p->val=a;
    p->next=NULL;
    nod *q=v[h];
    if(q==NULL)
        v[h]=p;
    else {
        while (q!=NULL){
            if(q->val==a)
                return;
            q=q->next;
        }
        q=p;
    }
}

void sterge(int a){
    int h=a%44722;
    if(v[h]==NULL)
        return;
    nod *q=v[h];
    if(q->val==a){
        v[h]=q->next;
        delete q;
        return;
    }
    while(q->next!=NULL){
        nod *p=q->next;
        if(p->val==a){
            q->next=p->next;
            delete p;
            return;
        }
        else
            q=q->next;
    }
}

void exista(int a){
    int h=a%44722;
    nod *q=v[h];
    while(q!=NULL){
        if(q->val==a){
            fo<<1<<'\n';
            return;
        }
        else
            q=q->next;
    }
    fo<<0<<'\n';
    return;
}

int main()
{
    fi>>n;
    for (int i=1;i<=n;i++) {
        fi>>t>>x;
        if(t==1)
            adauga(x);
        else
            if(t==2)
                sterge(x);
            else
                exista(x);
    }
    return 0;
}