Cod sursa(job #1962689)

Utilizator GandalfTheWhiteGandalf the White GandalfTheWhite Data 11 aprilie 2017 23:18:57
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#include <vector>
using namespace std;

vector <int> A;

int n,k,sum,front,back,Q[5000005];

void Read(){

    int i,x;
    freopen("deque.in","r",stdin);

    scanf("%d%d",&n,&k);
    A.push_back(0);
    for (i=1;i<=n;++i){
        scanf("%d",&x);
        A.push_back(x);
        }
}

void Solve(){

    int i;

    front=1;back=0;
    for (i=1;i<=n;++i){

        while (front<=back && A[i]<=A[Q[back]]) back--;
        Q[++back]=i;
        if (Q[front]==i-k) front++;;
        if (i>=k) sum+=A[Q[front]];
        }
}

void Write(){

    freopen("deque.out","w",stdout);

    printf("%d",sum);
}
int main()
{
    Read();
    Solve();
    Write();
    return 0;
}