Pagini recente » Cod sursa (job #97697) | Cod sursa (job #2403152) | Cod sursa (job #849795) | Cod sursa (job #2934522) | Cod sursa (job #2691742)
#include <stdio.h>
int n, poz, st, k, x;
struct elemente{
int val, poz;
} q[ 5000000 ];
int main()
{
FILE *fin = fopen( "deque.in", "r" );
fscanf( fin, "%d %d", &n, &k );
for( int i = 0; i < k; i++ ){
fscanf( fin, "%d", &x );
while( poz > st && q[ poz - 1 ].val > x )
--poz;
q[ poz ].val = x;
q[ poz++ ].poz = i;
}
long long s = q[ st ].val;
for( int i = k; i < n; i++ ){
fscanf( fin, "%d", &x );
if( q[ st ].poz <= i - k )
++st;
while( poz > st && q[ poz - 1 ].val > x )
--poz;
q[ poz ].val = x;
q[ poz++ ].poz = i;
s += q[ st ].val;
}
FILE *fout = fopen( "deque.out", "w" );
fprintf( fout, "%lld\n", s );
fclose( fout );
return 0;
}