Pagini recente » Cod sursa (job #441265) | Cod sursa (job #1304333) | Cod sursa (job #2954213) | Cod sursa (job #180443) | Cod sursa (job #2543482)
#include <iostream>
#include <fstream>
using namespace std;
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];
int main()
{
ifstream fi("deque.in");
ofstream fo("deque.out");
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]);
}
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;
}