Cod sursa(job #1480861)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 3 septembrie 2015 12:08:27
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
using namespace std;

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

const int MOD = 699967;

vector <int> v[MOD];
int N;

int H(int x)
{
    return x % MOD;
}

void adauga(int x)
{
    int p = H( x );


    bool gasit = false;

    for(vector <int>:: iterator it = v[ p ].begin(); it != v[ p ].end(); it++)
        if( *it == x )
        {
            gasit = true;
            break;
        }

    if( gasit == false )
        v[ p ].push_back( x );
}

void sterge(int x)
{
    int p = H( x );

    for(vector <int>::iterator it = v[ p ].begin(); it != v[ p ].end(); it++)
        if( *it == x )
        {
            v[ p ].erase( it );
            return;
        }
}

bool cauta(int x)
{
    int p = H( x );

    for(vector <int>:: iterator it = v[ p ].begin(); it != v[ p ].end(); it++)
        if( *it == x )
            return true;

    return false;
}

int main()
{
    in>>N;

    int cod, x;

    for(int i = 1; i <= N; i++)
    {
        in>>cod>>x;

        if( cod == 1 )
        {
            adauga( x );
            continue;
        }

        if( cod == 2 )
        {
            sterge( x );
            continue;
        }

        if( cod == 3 )
        {
            if( cauta( x ) == true )
                out<<1<<endl;
            else out<<0<<endl;
        }
    }

    return 0;
}