Cod sursa(job #1257516)

Utilizator livliviLivia Magureanu livlivi Data 7 noiembrie 2014 20:47:54
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
#define MAX 5000000
using namespace std;

int v[MAX+1];
int st[MAX+1];
int str,fin;

int main(){
    freopen ("deque.in","r",stdin);
    freopen ("deque.out","w",stdout);
    int n,i,k;
    long long sum;

    scanf ("%d%d",&n,&k);

    sum=0;

    str=0;
    fin=0;

    for(i=1;i<k;i++){
        scanf ("%d",&v[i]);

        while(v[i]<=v[st[fin-1]] &&fin>str)
            fin--;

        st[fin]=i;
        fin++;
    }

    for(;i<=n;i++){
        scanf ("%d",&v[i]);

        while(v[i]<=v[st[fin-1]] &&fin>str)
            fin--;

        st[fin]=i;
        fin++;

        if (st[str]==i-k) str++;

        sum=sum+v[st[str]];
    }

    printf ("%lld",sum);

    return 0;
}