Cod sursa(job #2609315)

Utilizator Silviu.Stancioiu@gmail.comSilviu Stancioiu [email protected] Data 2 mai 2020 13:44:29
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <utility>
#include <iostream>

using namespace std;

const int MAX_N = 5000010;

pair<int, int64_t> deq[MAX_N];

int main()
{
    ifstream fin("deque.in");
    
    int n, k;
    fin >> n >> k;

    int front = 0;
    int back = -1;
    int64_t sum = 0;
    
    for (int i = 0; i < n; i++)
    {
        int64_t val;
        fin >> val;
        while (back >= 0 && deq[back].second > val)
            back--;
        deq[++back] = make_pair(i, val);
        if (i >= k - 1)
        {
            while (deq[front].first < i - (k - 1))
                front++;
            int64_t min = deq[front].second;

            sum += min;
        }
    }
    fin.close();

    ofstream fout("deque.out");
    fout << sum;
    fout.close();

    return 0;
}