Pagini recente » Cod sursa (job #955615) | Cod sursa (job #2543457)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
int a[5000002];
int st[5000002];
int dr[5000002];
int main()
{
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;
}