Cod sursa(job #2885691)

Utilizator AndreeaCreitaCreita Andreea AndreeaCreita Data 6 aprilie 2022 13:28:26
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.13 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");
/*
Fie o multime de numere naturale initial vida. Asupra acestei multimi se efectueaza operatii de urmatoarele tipuri:

operatia de tipul 1: se adauga elementul x la multime (unde x este un parametru al operatiei). Daca x este deja in multime, atunci aceasta ramane neschimbata.
operatia de tipul 2: se sterge elementul x, daca acesta este deja in multime. In caz contrar, multimea ramane neschimbata.
operatia de tipul 3: returneaza 1 daca si numai daca x este in multime, iar in caz contrar returneaza 0.

*/

#define k 666013
//int k= 666013;
vector<int> myhash[k+5];


int cautare_cheie(int x)
{

     int clasa = x % k;

    for(int i = 0; i< myhash[clasa].size(); i++)
    {

        if(myhash[clasa][i] == x)
        {

            return 1;
        }

    }
    return 0;
}
int main()
{


    int n, operatie, nr, poz, x,clasa;
    int found = 0;
    in>>n;
    for(int i=1; i<=n; i++)
    {

        in>>operatie;
        in>>nr;

        if(operatie == 1)
        {
             clasa = x % k;

            if(cautare_cheie(nr)==0)
            {

                myhash[clasa].push_back(nr);
            }

        }
        else if (operatie == 2)
        {
             clasa = x% k;
            int found = 0;
            for(int i=0;i<myhash[clasa].size();i++)
            {

                if(myhash[clasa][i] == nr)
                {
                    found = 1;
                    poz =i;
                }
            }
            if(found == 1)
            {

                myhash[clasa].erase(myhash[clasa].begin() + poz);
            }

        }
        else if (operatie == 3)
        {
            int found = 0;
            clasa = x%k;
            for(int i = 0; i< myhash[clasa].size();i++)
            {
                if(myhash[clasa][i]==nr)
                {
                    found =1;

                    break;
                }

            }
            out<<found<<'\n';


        }

    }


    return 0;
}