Cod sursa(job #2430223)

Utilizator BogBBogdan BogB Data 13 iunie 2019 11:02:13
Problema Heapuri Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <set>

struct Valoare{
    int numar;
    int ordine;
};

namespace std {
    template<>
    struct less<Valoare> {
        bool operator()(const Valoare &valoare1, const Valoare &valoare2) const {
            return valoare1.numar < valoare2.numar;
        }
    };
}

int main() {

    FILE * fisier_out = fopen("heapuri.out", "w");
    FILE * fisier_in = fopen("heapuri.in", "r");
    int N, cod, x, ordine_introdus = 1;
    std::multiset<Valoare> mySet;
    Valoare valoare;

    fscanf(fisier_in, "%d", &N);
    for(int i = 0; i < N; i++){
        fscanf(fisier_in, "%d", &cod);
        if(cod == 1){
            fscanf(fisier_in, "%d", &x);
            valoare.numar = x;
            valoare.ordine = ordine_introdus;
            ordine_introdus = ordine_introdus + 1;
            mySet.insert(valoare);
        }

        if(cod == 2){
            fscanf(fisier_in, "%d", &x);
            for(std::set<Valoare>::iterator it = mySet.begin(); it != mySet.end(); it++) {
                if(it->ordine == x){
                    mySet.erase(*it);
                    break;
                }
            }
        }

        if(cod == 3){
            fprintf(fisier_out, "%d\n", mySet.begin()->numar);
        }
    }


    return 0;
}