Cod sursa(job #1804150)

Utilizator patricia.predaPatricia Preda patricia.preda Data 12 noiembrie 2016 11:50:17
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <deque>
#include <iostream>
using namespace std;
long long suma;
int nr, k, i, a[5000002];
deque <int> dequeue;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d %d", &nr, &k);
    for(i=1; i<=nr; i++)
        scanf("%d", &a[i]);
    dequeue.push_back(1);
    for(i=2; i<=nr; i++)
    {
        while(!dequeue.empty() && a[i]<a[dequeue.front()])
            dequeue.pop_front();
        dequeue.push_front(i);
        if(i>=k)
            suma+=a[dequeue.back()];
        while(!dequeue.empty() && dequeue.back()<=i-k+1)
            dequeue.pop_back();
    }
    cout << suma;
}