Pagini recente » Cod sursa (job #350308) | Cod sursa (job #2352559) | Cod sursa (job #789759) | Cod sursa (job #697298) | Cod sursa (job #383233)
Cod sursa(job #383233)
#include<cstdio>
const int NMAX = 5000005 ;
int k ;
int dq [ NMAX ] , st = 0 , dr = 0 ;
int x [ NMAX ] ;
long long S = 0 ;
inline void stanga ( int i )
{
if ( i - dq[st] == k )
++st;
}
void dreapta ( int i )
{
while ( st <= dr && x [ i ] <= x [ dq[dr] ] )
--dr ;
dq [ ++dr ] = i ;
}
int main ( )
{
freopen ( "deque.in" , "r" , stdin ) ;
freopen ( "deque.out" , "w" , stdout ) ;
int n , i ;
scanf ( "%d%d" , & n , &k ) ;
for ( i = 1 ; i <= n ; ++ i )
scanf ( "%d" , & x[i] ) ;
st=dr=1;
dq[1]=1;
for ( i = 2 ; i <= n ; ++ i )
{
stanga ( i ) ;
dreapta ( i ) ;
if ( i >= k )
S+= (long long)x[dq[st]] ;
}
printf ( "%lld\n" , S ) ;
return 0 ;
}