Cod sursa(job #1315534)

Utilizator Denisa13Stefan Denisa Denisa13 Data 12 ianuarie 2015 21:36:37
Problema Hashuri Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("hashuri.in");
ofstream g("hashuri.out");

unsigned long n,m=573571,x;
struct nod {unsigned long info;
            nod *next;} *p, *h[573571],*q;
void insereaza()
{
    unsigned long poz=x%m;
    if(h[poz]==NULL)
    {
        p=new nod;
        p->info=x;
        p->next=NULL;
        h[poz]=p;
    }
    else
    {
        p=h[poz];
        while(p->next!=NULL && p->info!=x)
            p=p->next;
        if(p->info!=x)
        {
            q=new nod;
            q->info=x;
            q->next=NULL;
            p->next=q;
        }
    }
}
void sterge()
{
    unsigned long poz=x%m;
    p=h[poz];
    if(p->info==x)
    {
        p=p->next;
        h[poz]=p;
    }
    else
    {
        q=p;
        p=p->next;
        while(p->next!=NULL && p->info!=x)
        {
            q=p;
            p=p->next;
        }
        if(p->info==x)
            q->next=p->next;
    }
}
bool query()
{
    unsigned long poz=x%m;
    p=h[poz];
    while(p!=NULL)
    {
        if(p->info==x)
            return 1;
        p=p->next;
    }
    return 0;
}
int main()
{
    f>>n;
    unsigned long i;
    int op;
    for(i=0;i<=m-1;i++)
        h[i]=NULL;
    for(i=1;i<=n;i++)
    {
        f>>op>>x;
        if(op==1)
            insereaza();
        if(op==2)
            sterge();
        if(op==3)
            g<<query()<<endl;
    }

    return 0;
}