Pagini recente » Cod sursa (job #412582) | Cod sursa (job #2358609) | Cod sursa (job #241302) | Cod sursa (job #599957) | Cod sursa (job #1268841)
#include<stdio.h>
#include<deque>
using namespace std;
const int NMAX = 5000000;
struct str
{
int val, poz;
}v[NMAX+1];
deque<str> d;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int n, k;
long long sol=0ll;
scanf("%d%d", &n, &k);
for(int i=1; i<=n; ++i)
{
scanf("%d", &v[i].val);
v[i].poz=i;
}
for(int i=1; i<k; ++i)
{
while(d.size() && d.back().val>=v[i].val)
d.pop_back();
d.push_back(v[i]);
}
for(int i=k; i<=n; ++i)
{
if(d.front().poz<=i-k)
d.pop_front();
while(d.size() && d.back().val>=v[i].val)
d.pop_back();
d.push_back(v[i]);
sol+=(long long)d.front().val;
}
printf("%lld\n", sol);
return 0;
}