Cod sursa(job #2740874)

Utilizator SteFUNGrigorescu Stefan Dumitru SteFUN Data 14 aprilie 2021 16:32:39
Problema Hashuri Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.63 kb
#include <iostream>
#include <fstream>

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

const int prim1 = 16383089, prim2 = 16379731, prim3 = 16383007;
int v[prim2];

void add(int x)
{
    int i = 0, poz = x % prim2;
    while(true)
    {
        if (v[poz] == x)
            break;
        else if (v[poz] == 0 or v[poz] == -1)
        {
            v[poz] = x;
            break;
        }
        else
        {
            i++;
            poz = (x + i * (x / prim2 + 1)) % prim2;
        }
    }
}

void sterge(int x)
{
    int i = 0, poz = x % prim2;
    while (true)
    {
        if (v[poz] == x)
        {
            v[poz] = -1;
            break;
        }
        else if (v[poz] == 0 or v[poz] == -1)
            break;
        else
        {
            i++;
            poz = (x + i * (x / prim2 + 1)) % prim2;
        }
    }
}

bool apartine(int x)
{
    int i = 0, poz = x % prim2;
    while (true)
    {
        if (v[poz] == x)
            return 1;
        else if (v[poz] == 0)
            return 0;
        else
        {
            i++;
            poz = (x + i * (x / prim2 + 1)) % prim2;
        }
    }
}

int main()
{
    int nrop;
    f >> nrop;
    for (int i = 0; i < nrop; i++)
    {
        int op, param;
        f >> op >> param;
        switch (op)
        {
        case 1:
        {
            add(param);
        }
        break;
        case 2:
        {
            sterge(param);
        }
        break;
        case 3:
        {
            g << apartine(param) << "\n";
        }
        }
    }
    return 0;
}