Pagini recente » Cod sursa (job #548443) | Cod sursa (job #1891967) | Cod sursa (job #757309) | Cod sursa (job #2154610) | Cod sursa (job #2543505)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("date.in");
ofstream fout ("date.out");
int N, K;
int A[5000002];
int ST[5000002], DR[5000002];
int main()
{
int N, K;
fin>>N>>K;
for (int i=1;i<=N;i++)
fin>>A[i];
///se construieste sirul ST
ST[0]=2000000000;
for (int i=1;i<=N;i++)
if (i%K==1)
ST[i]=A[i];
else
ST[i]=min(ST[i-1],A[i]);
///se construieste sirul DR
DR[N+1]=2000000000;
DR[N]=A[N];
for (int i=N-1;i>=1;i--)
if (i%K==0)
DR[i]=A[i];
else
DR[i]=min(DR[i+1],A[i]);
long long rez;
rez=0;
int a, b;
a=1;
b=K;
while (b<=N)
{
rez=rez+min(DR[a],ST[b]);
a++;
b++;
}
fout<<rez;
fin.close();
fout.close();
return 0;
}