#include #include #include #define MAX_M 1000 using namespace std; int main(){ int n,m; cin >> n;//ひろうゴミの数 cin >> m;//落ちているゴミの総数 int D[MAX_M]; int min_len = 9999999; int len = 0; for(int d = 0; d < m; d++) cin >> D[d]; /* N個のごみを拾うための最短距離 距離がマイナスのところのゴミを拾うとき、 */ sort(D, D + m);//とりあえずソートする() /* 距離がマイナスのところだけをひろう → 一番遠いところのABS取る 距離がプラスのところだけをひろう →一番遠いところのABSを取る 距離がプラスとマイナスのところをひろう → マイナスの座標の絶対値の2倍+プラスの座標が答え(一回戻る必要がある) */ // cout << endl; for(int d = 0; d < m - n + 1; d++){ // cout << "D[" << d << "] :" << D[d]; // cout << " | D[" << d + n - 1 << "] :" << D[d+n-1] << endl; if(D[d] <= 0 && D[d+n-1] <= 0){//座標がマイナスのところだけ len = -D[d]; } else if(D[d] >= 0 && D[d+n-1] >= 0){//座標がプラスのところだけ len = D[d+n-1]; } else { len = D[d+n-1] - D[d] * 2;//マイナスの座標のぶんだけ最初行ってからでないとだめ } if(len < min_len){ min_len = len; // cout << "更新 "; } // cout << "len:" << len << endl; len = 0; } cout << min_len << endl; return 0; }