Pagini recente » Cod sursa (job #2970732) | Cod sursa (job #3268249) | Cod sursa (job #1866684) | Cod sursa (job #2115609) | Cod sursa (job #2542719)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int N,K;
int A[5000001],ST[5000001],DR[5000001];
long long rez;
int main()
{
fin>>N>>K;
for(int i=1;i<=N;i++)
fin>>A[i];
for(int i=1;i<=N;i++)
if(i%K==1)
ST[i]=A[i];
else
ST[i]=min(A[i],ST[i-1]);
DR[N]=A[N];
for(int i=N-1;i>=1;i--)
if(i%K==0)
DR[i]=A[i];
else
DR[i]=min(A[i],DR[i+1]);
int st,dr;
rez=0LL;
st=1;
dr=K;
while (dr<=N)
{
int v;
v=min(DR[st],ST[dr]);
rez+=v;
st++;
dr++;
}
fout<<rez;
fin.close();
fout.close();
return 0;
}