Cod sursa(job #1879490)

Utilizator popescu.octavianPopescu Octavian popescu.octavian Data 14 februarie 2017 22:32:30
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#define pb push_back
#define NMax 5000010
#define nod pair<int, int>

using namespace std;

int n, k, i, last, first, deq[NMax], v[NMax];
long long sum;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(i=1; i<=n; i++)
        scanf("%d",&v[i]);
    first=1; last=0;
    for(i=1; i<=n; i++)
    {
        while(v[i]<=v[deq[last]] && first<=last)
            last--;
        deq[++last]=i;
        if(deq[first]==i-k)
            first++;
        if(i>=k) sum+=v[deq[first]];
    }
    printf("%lld",sum);
    return 0;
}