Cod sursa(job #2294929)

Utilizator alexnigaNiga Alexandru alexniga Data 2 decembrie 2018 22:54:06
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector<int> hashuri[1000001];

const int KEY = 196613;

void AdaugaInHash(int y)
{
    int este = 0, pozitie = y % KEY;
    long long i;
    for (i = 0; i < hashuri[pozitie].size(); i++)
    {
        if (este == 1)
            i = hashuri[pozitie].size() + 1;

        if (hashuri[pozitie][i] == y)
            este = 1;
        else
        {
            if (hashuri[pozitie][i] == -1)
            {
                este = 1;
                hashuri[pozitie][i] = y;
            }
        }
    }
    if (este == 0)
        hashuri[pozitie].push_back(y);
}

void StergeDinHash(int y)
{
    int este = 0, pozitie = y % KEY;
    long long i;
    for (i = 0; i < hashuri[pozitie].size(); i++)
    {
        if (este == 1)
            i = hashuri[pozitie].size() + 1;
        if (hashuri[pozitie][i] == y)
        {
            este = 1;
            hashuri[pozitie][i] = -1;
        }

    }
}

int EsteSauNuInHash(int y)
{
    int este = 0, pozitie = y % KEY;
    long long i;
    for (i = 0; i < hashuri[pozitie].size(); i++)
    {
        if(este == 1)
            i = hashuri[pozitie].size() + 1;
        if(hashuri[pozitie][i] == y)
            este = 1;
    }

    return este;

}


int main()
{
    int n, y, cere;
    f >> n;

    for (int i = 1; i <=n; i++)
    {
        f >> cere >> y;

        if (cere == 1)
            AdaugaInHash(y);
        if(cere == 2)
            StergeDinHash(y);
        if(cere == 3)
            g << EsteSauNuInHash(y) << "\n";
    }

    return 0;
}