Pagini recente » Cod sursa (job #1514148) | Cod sursa (job #548969) | Istoria paginii runda/leftbehind | Monitorul de evaluare | Cod sursa (job #847749)
Cod sursa(job #847749)
#include <stdio.h>
#include <stdlib.h>
int N , K ;
int deque[2000000] , v[200000];
int s = 0 , p , u ;
int main ()
{
FILE *fin , *fout ;
fin = fopen ( "deque.in" , "rt" );
fout = fopen ( "deque.out" , "wt" );
fscanf ( fin , "%d %d " , &N , &K );
p = 1 ;
u = 0;
for ( int a , i = 1 ; i <= N ; i++ )
{
fscanf ( fin , "%d" , v + i );
while ( v[i] <= v[deque[u]] && p <= u ) u--;
deque[++u] = i ;
if ( deque[u] - deque[p] == K ) p++;
if ( i >= K ) s += v[deque[p]];
}
//printf ( "suma:%d\n" , s );
fprintf ( fout , "%d" , s );
fclose ( fin );
fclose ( fout );
return 0;
}