Pagini recente » Cod sursa (job #2324420) | Cod sursa (job #2256935) | Cod sursa (job #505735) | Cod sursa (job #2377652) | Cod sursa (job #2543497)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi ("deque.in");
ofstream fo ("deque.out");
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];
int main()
{
fi>>N>>K;
for (int i=1 ; i<=N ; i++)
fi>>A[i];
///se construieste sirul ST
ST[0]=2000000;
for (int i=1 ; i<=N ; i++)
if (i%K==0)
ST[i]=A[i];
else
ST[i]=min(ST[i-1],A[i]);
///se construieste sirul DR
DR[N+1]=2000000;
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++;
}
fo<<rez;
fi.close();
fo.close();
return 0;
}