Pagini recente » Cod sursa (job #692576) | Cod sursa (job #906644) | Cod sursa (job #2142052) | Cod sursa (job #2455281) | Cod sursa (job #2543469)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fi("deque.in");
ofstream fo("deque.out");
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];
fi>>N>>K;
for(int i=1; i<=N; i++)
fi>>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]);
int 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;
}