Cod sursa(job #239737)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 5 ianuarie 2009 18:05:32
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include<fstream>
using namespace std;

const int M = 666013;   
typedef struct List* Lista;
struct List
{
   long long Key;    
   Lista Next;
}; 
typedef Lista Hash[M];
Hash H;
long long i,N,op;
long long x;

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

void initH(Hash H)
{
     for(i=0;i<M;H[i++]=NULL);
}

int hash(long long p)
{
    return p%9973;
}

void addH(Hash H, long long P)
{
     Lista L=new List;
     L->Key=P;
     L->Next=H[hash(P)];
     H[hash(P)]=L;
}

int searchH(Hash H, long long P)
{
       Lista L;
       for(L=H[hash(P)];L&&L->Key!=P;L=L->Next);
       return L!=NULL;
}

void deleteH(Hash H, long long P)
{
     Lista L=H[hash(P)];
     for(L;L&&L->Key!=P;L=L->Next);
     if(!L) return;
     if(L->Key==P) 
     {
         H[hash(P)]=H[hash(P)]->Next;              
         delete L;
     }
     else
     {
         Lista L2 = L;
         L=L->Next;
         delete L2;
     }
}

int main()
{
    initH(H);
    f>>N;
    for(i=0;i<N;i++)
    {
        f>>op>>x;
        switch(op)   
        {
             //case 1: addH(H, x);    break;
             //case 2: deleteH(H, x); break;
             case 3: g<<searchH(H, x)<<"\n"; break;        
        }
    }
    f.close();
    g.close();
    return 0;
}