Pagini recente » Cod sursa (job #2049716) | Cod sursa (job #251241) | Cod sursa (job #1012786) | Cod sursa (job #1040424) | Cod sursa (job #1490948)
#include <stdio.h>
#include <stdlib.h>
int v[5000001];
int d[5000001];
int dr=-1,st=0,n,k;
void stanga(int i){
if(d[st]==i-k)
st++;
}
void dreapta (int i){
while( st<=dr && v[i]<v[d[dr]] )
dr--;
d[++dr]=i;
}
int main()
{
FILE *fin, *fout;
int suma=0,i;
fin=fopen("deque.in" , "r" );
fout=fopen("deque.out" , "w" );
fscanf(fin, "%d%d" , &n,&k);
for (i=0;i<n;i++)
fscanf(fin, "%d" , &v[i]);
for(i=0;i<n;i++){
if(i>=k) stanga(i);
dreapta(i);
if(i>=k-1)
suma=suma+v[d[st]];
}
fprintf(fout, "%d" , suma);
fclose(fin);
fclose(fout);
return 0;
}