Pagini recente » Cod sursa (job #1939717) | Cod sursa (job #2393544) | Cod sursa (job #394592) | Cod sursa (job #2655648) | Cod sursa (job #1360198)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream F("deque.in");
ofstream G("deque.out");
const int N = 5000010;
int n,k,a[N];
deque<int> dq;
long long ans;
int main()
{
F>>n>>k;
for (int i=1;i<=n;++i)
F>>a[i];
for (int i=1;i<=k;++i)
{
if ( !dq.empty() )
{
while ( a[i] < a[dq.back()] )
{
dq.pop_back();
if ( dq.empty() ) break;
}
}
dq.push_back( i );
}
ans += a[dq.front()];
for (int i=k+1;i<=n;++i)
{
if ( !dq.empty() )
if ( dq.front() <= i-k )
dq.pop_front();
if ( !dq.empty() )
{
while ( a[i] < a[dq.back()] )
{
dq.pop_back();
if ( dq.empty() ) break;
}
}
dq.push_back( i );
ans += a[dq.front()];
}
G<<ans<<'\n';
}