Cod sursa(job #2746790)

Utilizator izotova_dIzotova Daria izotova_d Data 28 aprilie 2021 15:06:04
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.97 kb
#include <iostream>
#include <set>
#include <vector>
#include <fstream>
using namespace std;
/*
int main() {
    multiset <int> my_set;
    my_set.insert(1); // Insereaza o valoare.
    my_set.insert(1);

    if (my_set.find(1) != my_set.end()) { // Cauta o valoare.
        printf("Am gasit 1 in set!\n");
    }
    else {
        printf("1 nu se afla set!\n");
    }

    // Sterge o valoare din set. Daca aceasta se afla de
    // mai multe ori in set, este stearsa numai o copie.
    my_set.erase(my_set.find(1));
    printf("Exista %d elemente in set\n", my_set.size());

    my_set.insert(1);
    my_set.insert(1);

    // Sterge o valoare din set. Daca aceasta se afla de
    // mai multe ori in set, sunt sterse toate copiile.
    my_set.erase(1);
    printf("Exista %d elemente in set\n", my_set.size());

    my_set.insert(1);
    my_set.insert(-3);
    my_set.insert(7);
    my_set.insert(-2);
    my_set.insert(2);

    // Valoarea minima.
    multiset <int> ::iterator it = my_set.begin();
    printf("Valoarea cea mai mica din set este %d\n", *it);

    // Valoarea maxima.
    it = my_set.end();
    --it;
    printf("Valoarea cea mai mare din set este %d\n", *it);
    return 0;
}
*/

ifstream fin("heapuri.in");
ofstream fout("heapuri.out");

multiset<int> my_set;
vector<int> positions;
unsigned int n;
unsigned int operation;
int number;

int main()
{
    fin >> n;

    for (int i = 0; i < n; i++)
    {
        fin >> operation;

        switch (operation)
        {
            case 1:
            {
                fin >> number;
                my_set.insert(number);
                positions.push_back(number);
            } break;
            case 2:
            {
                fin >> number;
                my_set.erase(my_set.find(positions[number-1]));

            } break;
            default:
            {
                fout << *my_set.begin() << "\n";
            } break;
        }
    }

}