Cod sursa(job #2200335)

Utilizator icansmileSmileSmile icansmile Data 1 mai 2018 00:18:09
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <queue>
#include <stack>
#include <algorithm>

int main() {
    int numberOfElements, subsequenceLength;
    int element;
    int sum = 0;
    int min = INT32_MAX;
    std::vector<int> elements;
    std::queue<int> orderOfAdding;

    std::ifstream in("deque.in");
    std::ofstream out("deque.out");

    in >> numberOfElements >> subsequenceLength;

    for (int i = 0; i < subsequenceLength; i++) {
        in >> element;
        elements.push_back(element);
        orderOfAdding.push(element);
    }

    std::make_heap(elements.begin(), elements.end(), std::greater<int>());

    for (int i = subsequenceLength; i  < numberOfElements; i++) {
        int min = elements[0];
        sum += min;

        int removedElement = orderOfAdding.front();
        orderOfAdding.pop();

        elements.erase(std::find(elements.begin(), elements.end(), removedElement));

        in >> element;

        elements.push_back(element);
        orderOfAdding.push(element);

        std::make_heap(elements.begin(), elements.end(), std::greater<int>());
    }

    min = elements[0];
    sum += min;

    out << sum;

    in.close();
    out.close();

    return 0;
}