Pagini recente » Cod sursa (job #2222094) | Cod sursa (job #2745832) | Cod sursa (job #2237459) | Cod sursa (job #1635762) | Cod sursa (job #800396)
Cod sursa(job #800396)
#include<cstdio>
int n , k , *a , *dq, l=0 , lfront=1 ;
long long sol = 0 ;
int main()
{
freopen( "deque.in", "r",stdin );
freopen( "deque.out" ,"w", stdout );
scanf("%d %d" , &n, &k);
a=new int [n+3];
dq=new int [ n +3 ];
for(int i = 1 ; i <= n ; ++i )
{
scanf("%d",&a[i]);
}
for(int i = 1 ; i <= n ; ++i)
{
while ( ( l>=lfront ) >= 1 && a[ dq [ l ] ] >= a [ i] ) --l;
dq[ ++l ]= i;
while ( dq[ lfront ] <= i-k ) ++lfront ;
if( i >= k )sol += a[dq[ lfront ] ] ;
}
printf ( "%lld\n" ,sol ) ;
return 0 ;
}