Pagini recente » Cod sursa (job #649954) | Cod sursa (job #2874954) | Cod sursa (job #1272020) | Cod sursa (job #2355977) | Cod sursa (job #1193438)
#include <cstdio>
#include <queue>
using namespace std;
#define NMAX 5000001
deque < pair < int , int > > D;
int A[NMAX];
int i,N,K;
long long S;
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&N,&K);
for (i=1;i<=K;++i)
{
scanf("%d",&A[i]);
while (!D.empty() && D.back().first>=A[i]) D.pop_back();
D.push_back(make_pair(A[i],i));
}
S=1LL*D.front().first;
for (i=K+1;i<=N;++i)
{
scanf("%d",&A[i]);
while (!D.empty() && D.back().first>=A[i]) D.pop_back();
while (!D.empty() && D.front().second<=i-K) D.pop_front();
D.push_back(make_pair(A[i],i));
S+=1LL*D.front().first;
}
printf("%lld\n",S);
return 0;
}