Pagini recente » Cod sursa (job #144643) | Arhiva de probleme | Cod sursa (job #3289833) | Cod sursa (job #1186280) | Cod sursa (job #3287947)
#include <fstream>
#include<queue>
using namespace std;
ifstream cin ( "deque.in" );
ofstream cout( "deque.out" );
#define FR( a, b) for( int a = 0; a < b ; a ++ )
#define FOR( a, c, b ) for( int a = c; a < b ; a++)
const int Nmax = 5e6 + 5;
int a[Nmax];
deque<int> dq;
int main()
{
int n, k;
long long ans = 0;
cin >> n >> k;
FOR( i,1,n+1)
cin >> a[i];
dq.push_back( 1 );
FOR( i, 2, k + 1 ) {
while( !dq.empty() && ( a[i] < a[dq.back()] ) )
dq.pop_back();
dq.push_back(i);
}
ans += a[dq.front()];
FOR( i, k + 1, n + 1 ) {
if( dq.front() == i - k )
dq.pop_front();
while( !dq.empty() && ( a[i] < a[dq.back()] ))
dq.pop_back();
dq.push_back(i);
ans+= a[dq.front()];
}
cout << ans << '\n';
return 0;
}