Cod sursa(job #2040965)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 16 octombrie 2017 18:59:55
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
/// Inspirat, un pic, dupa sursa oficiala :)

#include<iostream>
#include<fstream>
using namespace std;

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

const int N = 5000005;
int deque[N], values[N];

int main()
{
    long long sum_of_all_minimal_values = 0;
    int n,k,front,back;

    in>>n>>k;

    front = 1;
    back = 0;
    for(int index = 1; index <= n; ++index) in>>values[index];
    for(int index = 1; index <= n; ++index)
    {
        int crt_value = values[index];

        while(front <= back && crt_value < values[deque[back]]) /// Remove all smaller elements
            --back;

        deque[++back] = index;

        while(front <= back && (index - deque[front] + 1) > k) /// Remove elements outside the current sequence's range = K
            ++front;

        if(index >= k)
            sum_of_all_minimal_values += values[deque[front]];
        //for(int i=front; i<=back; ++i) cout<<values[deque[i]]<<" "; cout<<"\n";
    }

    out<<sum_of_all_minimal_values;


    return 0;
}