Cod sursa(job #430413)

Utilizator APOCALYPTODragos APOCALYPTO Data 30 martie 2010 23:41:50
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cstdio>
using namespace std;
ofstream fout("hashuri.out");
#define maxh 666013
 struct nod{
 long long inf;
 nod *leg;
 };
 nod *H[maxh];
long long n,op,x;

 void insereaza(int v)
 {nod *p;
 int h=v%maxh;

 for(p=H[h];p;p=p->leg)
   if(p->inf==v)
    return;
  p=new nod;
  p->leg=H[h];
  p->inf=v;
  H[h]=p;


 }

void sterge(int v)
{
    nod *p,*ante;
    int h=v%maxh;
    p=H[h];

    if(p!=NULL)
    {if(p->inf==v)
       {
           H[h]=p->leg;
       return;}

    for(p=H[h]->leg,ante=H[h];p;p=p->leg,ante=ante->leg)
     if(p!=NULL)
     if(p->inf==v)
       {ante->leg=p->leg;
       return;
       }
    }

}
void exista(int v)
{
    nod *p;
    int h=v%maxh;

    for(p=H[h];p;p=p->leg)
       if(p->inf==v)
         {fout<<"1"<<"\n";
         return;}
     fout<<"0"<<"\n";


}


void cit()
{int i;
    ifstream fin("hashuri.in");
     fin>>n;
     for(i=1;i<=n;i++)
       {fin>>op>>x;
       if(op==1)
          insereaza(x);

       if(op==2)
          sterge(x);
       if(op==3)
          exista(x);
       }
       fin.close();
}

int main()
{
    cit();
    fout<<'\n';
    fout.close();
    return 0;
}