Pagini recente » Cod sursa (job #1362026) | Cod sursa (job #2284826) | Cod sursa (job #818265) | Cod sursa (job #677016) | Cod sursa (job #1803702)
#include <iostream>
#include <cstdio>
#include <deque>
#define NMAX 5000005
using namespace std;
int N,K,v[NMAX];
long long S;
deque<int> q;
void citire()
{
scanf("%d%d",&N,&K);
for(int i=1;i<=N;i++)
scanf("%d",&v[i]);
}
void adauga(int i)
{
while(!q.empty()&&v[q.back()]>v[i])
q.pop_back();
q.push_back(i);
}
void init()
{
for(int i=1;i<=K;i++)
adauga(i);
S+=v[q.front()];
}
void primul(int i)
{
if(!q.empty()&&i-q.front()+1>K)
q.pop_front();
}
void rezolvare()
{
for(int i=K+1;i<=N;i++)
{
adauga(i);
primul(i);
S+=v[q.front()];
}
}
void afisare()
{
printf("%lld\n",S);
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
citire();
init();
rezolvare();
afisare();
return 0;
}