搜索
您的当前位置:首页正文

AtCoder Regular Contest 101 C-Candles

来源:步旅网

Problem Statement

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.

Constraints

  • 1≤N≤105
  • 1≤KN
  • xi is an integer.
  • |xi|≤108
  • x1<x2<…<xN

Input

Input is given from Standard Input in the following format:

N K x1 x2 … xN

Output

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:

  • Move from coordinate 0 to −10.
  • Light the second candle from the left.
  • Move from coordinate −10 to 10.
  • Light the third candle from the left.
  • Move from coordinate 10 to 20.
  • Light the fourth candle from the left.

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;
}

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top