Pagini recente » Cod sursa (job #2901842) | Cod sursa (job #2016526) | Cod sursa (job #1288849) | Cod sursa (job #1890584) | Cod sursa (job #1382802)
#include <stdio.h>
#include <stdlib.h>
int d[5000001], v[5000000], st, dr, k;
void stanga(int i){
if(i-k==d[st])
st++;
}
void dreapta(int i){
while(st<=dr && v[i]<v[d[dr]])
dr--;
d[++dr]=i;
}
int main()
{
int n, i;
long long sum;
FILE *fi=fopen("deque.in", "r"), *fo=fopen("deque.out", "w");
fscanf(fi, "%d%d", &n, &k);
for(i=0;i<n;i++)
fscanf(fi, "%d", &v[i]);
st=0;
dr=-1;
for(i=0;i<k;i++)
dreapta(i);
sum=v[d[st]];
for(i=k;i<n;i++){
stanga(i);
dreapta(i);
sum+=v[d[st]];
}
fprintf(fo, "%lld", sum);
return 0;
}