There are N candles placed on a number line. The i-th candle from the left is placed on coordinate xi. Here, x1<x2<…<xN holds.
Initially, no candles are burning. Snuke decides to light K of the N candles.
Now, he is at coordinate 0. He can move left and right along the line with speed 1. He can also light a candle when he is at the same position as the candle, in negligible time.
Find the minimum time required to light K candles.
Input is given from Standard Input in the following format:
N K x1 x2 … xN
Print the minimum time required to light K candles.
Sample Input 1
5 3
-30 -10 10 20 50
Sample Output 1
40
He should move and light candles as follows:
Sample Input 2
3 2
10 20 30
Sample Output 2
20
Sample Input 3
1 1
0
Sample Output 3
0
There may be a candle placed at coordinate 0.
Sample Input 4
8 5
-9 -7 -4 -3 1 2 3 4
Sample Output 4
10
确定左右区间进行动态规划
#include<bits/stdc++.h>
using namespace std;
const int N = (int) 1e5;
int n,k;
long long a[N+5],ans=(long long)2e15;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i+k-1<=n;i++)
{
int l=i,r=i+k-1;
ans=min(ans,a[r]-a[l]+min(abs(a[l]),abs(a[r])));
}
cout<<ans;
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容