Pagini recente » Cod sursa (job #2717436) | Cod sursa (job #2327739) | Cod sursa (job #2720697) | Cod sursa (job #88117) | Cod sursa (job #1490970)
#include <stdio.h>
int m[5000000];
int v[5000000];
int n, k, st=0, dr=-1, i;
void sn(int i){
if(m[st]==i-k)
st++;
}
void dt(int i){
while(st<=dr && v[i]<v[m[dr]])
dr--;
m[++dr]=i;
}
int main()
{FILE *fin, *fout;
fin=fopen("deque.in", "r");
fout=fopen("deque.out", "w");
fscanf(fin, "%d %d", &n, &k);
long long sum=0;
for(i=0;i<n;i++){
fscanf(fin, "%d", &v[i]);
if(i>=k)
sn(i);
dt(i);
if(i>=k-1)
sum+=v[m[st]];
}
fprintf(fout, "%d ", sum);
return 0;
}