Pagini recente » Cod sursa (job #3139509) | Cod sursa (job #443135) | Cod sursa (job #666894) | Cod sursa (job #370186) | Cod sursa (job #2543465)
#include <fstream>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];
int main()
{
f>>N>>K;
for(int i=1; i<=N; ++i)
f>>A[i];
///se construieste sirul st
ST[0]=200000000;
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 dr
DR[0]=200000000;
DR[N+1]=200000000;
for(int i=N; i>0; --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=1,b=K;
while(b<=N)
{
rez=rez+min(DR[a],ST[b]);
a++;
b++;
}g<<rez;
f.close();
g.close();
return 0;
}