乙個碼頭中有n艘船和n個木樁,船的長度為2*x,碼頭的寬度為m,n個木樁的位置(相對碼頭左岸的位置)會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當然也不能超出碼頭的兩岸。船和木樁之間用繩子連線,並且1個木樁只能栓1條船,繩子的一頭拴在木樁上,另一頭拴在船的中間。而船中間到木樁的距離,就是所需的繩子的長度。由你根據給出的條件,排列船的位置,使得所用到的最長的繩子最短。輸出這個最短的長度,如果碼頭排不下所有船則輸出-1。
例如:n = 3, x = 2, m = 16。三個木樁的位置為:1 3 14。船的長度為2*x = 4。你可以將三艘船放在2 6 14(指的是船中間所處的位置),這樣船和船之間既沒有重疊,並且所用的最長的繩子最短,長度為3,即第2艘船到第二根木樁的距離。
input
第1行:3個數n x m,中間用空格分隔(1 <= n <= 50000, 1 <= x <= 10^9, 1 <= m <= 10^9)。output第2 - n + 1行:每行1個數pi,對應木樁的位置(0 <= pi <= pi+1 <= m),並且給出的資料是有序的。
輸出最長繩子的最小值。如果碼頭排不下所有船則輸出-1。input示例
3 2 1613output示例 314
#include using namespace std;
const int maxn = 50001;
int input[maxn];
int n, x, m;
bool check(int k)
else if (head + x <= input[i] + k)
else
}if (tail > m)
return true;
}int main()
if (2*x*n > m)
int result = m;
int left = 0;
int right = m;
while (left <= right)
else
}cout << result << endl;
return 0;
}
51nod 1243 排船的問題
1243 排船的問題 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m,n個木樁的位置 相對碼頭左岸的位置 會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當...
51nod 1243 排船的問題
1243 排船的問題 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m,n個木樁的位置 相對碼頭左岸的位置 會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當...
51NOD 1243 排船問題 二分
51nod1243排船問題 題意 一 個碼 頭中有n 艘船和n 個木樁,船的長度 為2 x 碼頭的 寬度為m 乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m 乙個碼頭中有 n艘船和 n個木樁 船的長 度為2 x,碼頭 的寬度為mn個 木樁的位 置 相對 碼頭左岸 的位置 會在資料 中...