Cod sursa(job #2370334)

Utilizator AplayLazar Laurentiu Aplay Data 6 martie 2019 11:39:57
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <cstdio>
#include <vector>
#include <set>

#define ADD 1
#define DELETE 2
#define MIN 3

using namespace std;

auto pairComparator = [](const pair<int, int>& first, const pair<int, int>& second) {
    return first.first < second.first;
};

int N, operation, value;
vector<int> values;
set<pair<int, int>, decltype(pairComparator)> s(pairComparator);

int main() {
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);

    scanf("%d", &N);
    while (N--) {
        scanf("%d", &operation);
        switch (operation) {
            case ADD: {
                scanf("%d", &value);
                values.push_back(value);
                s.insert(make_pair(value, values.size() - 1));
                break;
            }
            case DELETE: {
                scanf("%d", &value);
                s.erase(make_pair(values[value - 1], value - 1));
                break;
            }
            case MIN: {
                printf("%d\n", (*s.begin()).first);
                break;
            }
        }
    }

    return 0;
}