基地台 (APCS 2017-03 高級)

2.0s 256M

為因應資訊化與數位化的發展趨勢,某市長想要在城市的一些服務點上提供無線網路服務,因此他委託電信公司架設無線基地台。某電信公司負責其中 \(N\) 個服務點,這 \(N\) 個服務點位在一條筆直的大道上,它們的位置(座標)係以與該大道一端的距離 \(P[i]\) 來表示,其中 \(i=0 \sim N-1\)。由於設備訂製與維護的因素,每個基地台的服務範圍必須都一樣,當基地台架設後,與此基地台距離不超過 \(R\)(稱為基地台的半徑)的服務點都可以使用無線網路服務,也就是說每一個基地台可以服務的範圍是 \(D=2R\)(稱為基地台的直徑)。現在電信公司想要計算,如果要架設 \(K\) 個基地台,那麼基地台的最小直徑是多少才能使每個服務點都可以得到服務。

基地台架設的地點不一定要在服務點上,最佳的架設地點也不唯一,但本題只需要求最小直徑即可。以下是一個 \(N=5\) 的例子,五個服務點的座標分別是 \(1\)、\(2\)、\(5\)、\(7\)、\(8\)。

0    1    2    3    4    5    6    7    8    9
     ▲    ▲              ▲         ▲    ▲

假設 \(K=1\),最小的直徑是 \(7\),基地台架設在座標 \(4.5\) 的位置,所有點與基地台的距離都在半徑 \(3.5\) 以內。假設 \(K=2\),最小的直徑是 \(3\),一個基地台服務座標 \(1\) 與 \(2\) 的點,另一個基地台服務另外三點。在 \(K=3\) 時,直徑只要 \(1\) 就足夠了。

輸入格式

輸入有兩行。第一行是兩個正整數 \(N\) 與 \(K\),以一個空白間格。第二行 \(N\) 個非負整數 \(P[0]\)、\(P[1]\)、……、\(P[N-1]\) 表示 \(N\) 個服務點的位置,這些位置彼此之間以一個空白間格。請注意,這 \(N\) 個位置並不保證相異也未經過排序。本題中,\(K<N\) 且所有座標是整數,因此,所求最小直徑必然是不小於 \(1\) 的整數。

輸出格式

輸出最小直徑,不要有任何多餘的字或空白並以換行結尾。

範例輸入 1

5 2
5 1 2 8 7

範例輸出 1

3

範例輸入 2

5 1
7 5 1 2 8

範例輸出 2

7

評分說明

輸入包含若干筆測試資料,每一筆測試資料的執行時間限制 (time limit) 均為 \(2\) 秒,依正確通過測資筆數給分。其中:

第 1 子題組 10 分,座標範圍不超過 \(100\),\(1 \le K \le 2\),\(K < N \le 10\)。

第 2 子題組 20 分,座標範圍不超過 \(1,000\),\(1 \le K < N \le 100\)。

第 3 子題組 20 分,座標範圍不超過 \(1,000,000,000\),\(1 \le K < N \le 500\)。

第 4 子題組 50 分,座標範圍不超過 \(1,000,000,000\),\(1 \le K < N \le 50,000\)。

題目來源

APCS 2017 年 3 月 4 日實作題第 4 題「基地台」。參考 APCS 官方歷屆試題 PDF 與 ZeroJudge c575。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。