Cod sursa(job #2257465)

Utilizator livliviLivia Magureanu livlivi Data 10 octombrie 2018 09:18:11
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 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;
}