Pagini recente » Monitorul de evaluare | Cod sursa (job #3358552) | Cod sursa (job #1523656) | Cod sursa (job #1679180) | Cod sursa (job #3345616)
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
#include <deque>
using namespace std;
int v[5000010];
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
long long sum=0;
int n,k;
cin>>n>>k;
for(int i=1;i<=n;++i)
cin>>v[i];
deque<int> dq;
for(int i=1;i<=n;++i)
{
if(dq.empty() or v[dq.back()]<=v[i])
{
while(!dq.empty() and v[dq.back()]>=v[i])
{
dq.pop_back();
}
dq.push_back(i);
}
while(i>=k and !dq.empty() and dq.front()<=i-k)
{
dq.pop_front();
}
if(i>=k)
{
sum+=v[dq.front()];
}
}
cout<<sum;
return 0;
}