Cod sursa(job #1541510)

Utilizator fromzerotoheroFROM ZERO fromzerotohero Data 4 decembrie 2015 10:17:33
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

#define nmax 666013

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

int n;
int op, x;
vector <int> H[nmax];

void appendVal(int x)
{
    int mod = x % nmax;
    for (int i = 0; i < int(H[mod].size()); i++)
        if (H[mod][i] == x)
            return;
    H[mod].push_back(x);
}

void deleteVal(int x)
{
    int mod = x % nmax;
    for (vector <int> :: iterator it = H[mod].begin(); it != H[mod].end(); it++)
        if (*it = x)
        {
            H[mod].erase(it);
            return;
        }
}

bool check(int x)
{
    int mod = x % nmax;
    for (int i = 0; i < int(H[mod].size()); i++)
        if (H[mod][i] == x)
            return 1;
    return 0;
}

int main()
{

    fi >> n;

    for (int i = 1; i <= n; i++)
    {
        fi >> op >> x;

        if (op == 1)
        {
            // se adauga x in multime, daca x e deja in multime nu se face nimic
            appendVal(x);
        }
        else if (op == 2)
        {
            // se sterge elementul x din multime doar daca e in multime
            deleteVal(x);
        }
        else
        {
            // returneaza 1 daca x se afla in multime, 0 in caz contrar
            fo << check(x) << "\n";
        }
    }



    fi.close();
    fo.close();

    return 0;
}