Pagini recente » Cod sursa (job #2675769) | Cod sursa (job #3304949) | Cod sursa (job #3304948) | Cod sursa (job #1794709) | Cod sursa (job #1801794)
#include <iostream>
#include <deque>
#include <cstdio>
using namespace std;
const int NMax = 500005;
long long sum=0;
int N,K;
int A[NMax];
deque < int > Dq;
void Read()
{
scanf("%d%d", &N, &K);
for(int i=1; i<=N; ++i)
scanf("%d", &A[i]);
}
void Solve()
{
Dq.push_back(1);
for(int i=2; i<=N; ++i)
{
if(Dq.front()==i-K)
Dq.pop_front();
while(A[i]<=A[Dq.back()] && !Dq.empty())
Dq.pop_back();
Dq.push_back(i);
if(i>=K)
sum+=A[Dq.front()] * 1LL;
}
printf("%lld\n", sum);
}
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
Read();
Solve();
return 0;
}