Pagini recente » Cod sursa (job #1568898) | Cod sursa (job #2989966) | Diferente pentru teorema-chineza-a-resturilor intre reviziile 47 si 48 | Cod sursa (job #214045) | Cod sursa (job #1687360)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int MAXN = 5 * 1e6 + 7;
int N , K , A[MAXN];
void citire()
{
fin >> N >> K;
for(int i = 1 ; i <= N ; ++i)
fin >> A[i];
}
void solve()
{
deque < pair<int, int>>D;
long long ans(0);
for(int i = 1 ; i <=N; ++i)
{
while(!D.empty() && D.back().second >= A[i])
D.pop_back();
D.emplace_back(i, A[i]);
if(D.front().first == i-K) D.pop_front();
if(i >= K)
ans += D.front().second;
}
fout << ans << '\n';
}
int main()
{
citire();
solve();
}