Pagini recente » Cod sursa (job #2814149) | Cod sursa (job #1647774) | Cod sursa (job #2347051) | Cod sursa (job #1727055) | Cod sursa (job #3170803)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000000
int coada[ MAXN ], a[ MAXN ], left, right = -1;
int main()
{
FILE *fin, *fout;
int n, k, i, j, x;
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 ] );
}
fclose( fin );
for( i = 0; i < n; i++ )
{
while( a[ i ] <= a[ coada[ right ] ] && left <= right )
{
right--;
}
while( coada[ left ] <= i - k && left <= right )
{
left++;
}
right++;
coada[ right ] = i;
if( i >= k - 1 )
{
suma += a[ coada[ left ] ];
}
}
fout = fopen( "deque.out", "w" );
fprintf( fout, "%lld", suma );
fclose( fout );
return 0;
}