Pagini recente » Cod sursa (job #846209) | Cod sursa (job #2656524) | Cod sursa (job #505139) | Cod sursa (job #2507209) | Cod sursa (job #3170811)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000000
int coada[ MAXN ], a[ MAXN ];
int main()
{
FILE *fin, *fout;
int n, k, i, left = 0, right = -1;
long long suma = 0;
fin = fopen( "deque.in", "r" );
fscanf( fin, "%d%d", &n, &k );
for( i = 0; i < n; i++ )
{
fscanf( fin, "%d", &a[ i ] );
while( left <= right && a[ i ] <= a[ coada[ right ] ] )
{
right--;
}
if( left <= right && coada[ left ] == i - k )
{
left++;
}
coada[ ++right ] = i;
if( i >= k - 1 )
{
suma += a[ coada[ left ] ];
}
}
fclose( fin );
fout = fopen( "deque.out", "w" );
fprintf( fout, "%lld\n", suma );
fclose( fout );
return 0;
}