Cod sursa(job #591851)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 25 mai 2011 18:31:32
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <iostream>
#include <fstream>
#include <vector>

#define U 666013
#define Adaugare 1
#define Stergere 2
#define Cautare 3

using namespace std;

vector <long> H[U];
long N;

vector <long> :: iterator Seek (long X)
{
    vector <long> :: iterator it;
    long Key;
    Key=X%U;
    for (it=H[Key].begin (); it!=H[Key].end (); it++)
    {
        if (*it==X)
        {
            return it;
        }
    }
    return it;
}

void Insert (long X)
{
    vector <long> :: iterator it;
    long Key;
    Key=X%U;
    it=Seek(X);
    if (it==H[Key].end ())
    {
        H[Key].push_back (X);
    }
}

void Delete (long X)
{
    vector <long> :: iterator it;
    long Key;
    Key=X%U;
    it=Seek (X);
    if (it!=H[Key].end() )
    {
        H[Key].erase (it);
    }
}

int main()
{
    ifstream fin ("hashuri.in");
    ofstream fout ("hashuri.out");
    long Tip=0, X=0, i;
    fin >> N;
    for (i=0; i<N; i++)
    {
        fin >> Tip >> X;
        if (Tip==Adaugare)
        {
            Insert (X);
        }
        if (Tip==Stergere)
        {
            Delete (X);
        }
        if (Tip==Cautare)
        {
            if (Seek (X)==H[X%U].end ())
            {
                fout << "0\n";
            }
            else
            {
                fout << "1\n";
            }
        }
    }
    fin.close ();
    fout.close ();
    return 0;
}