營火競賽 (APCS 2026-11 中高級)

2.0s 256M

營隊要決定隔天由哪一隊負責營地建設,大家決定用一場火把比賽分出結果。

參加的 \(n\) 個人面向中央的營火圍成一圈,依順時針方向給每個人編號 \(1, 2, \ldots, n\)。因為大家都面向營火,每個人左手邊的人就是順時針方向的下一位:第 \(i\) 個人的左手邊是第 \(i+1\) 個人,第 \(n\) 個人的左手邊是第 \(1\) 個人。

隊伍編號是 \(1\)~\(k\),第 \(i\) 個人是第 \(t_i\) 隊的隊員。比賽開始時,每個人手上的火把都是點燃的,滅火器在第 \(1\) 個人手上。拿著滅火器的人稱為「行動者」,每一回合依照下面的順序進行:

  1. 行動者由左手邊那一位起,順著順時針一個一個往下看:火把已經熄滅的人跳過,和行動者同一隊的人也跳過。遇到第一位火把點燃、而且和行動者不同隊的人,行動者就把這個人的火把熄滅。火把被熄滅的人之後不會再當行動者。
  2. 這時如果火把點燃的人全部屬於同一隊,比賽結束,由這一隊負責隔天的營地建設。
  3. 否則,這一回合的行動者把滅火器往左手邊傳:從行動者的左手邊開始沿順時針方向找,交給第一位火把點燃的人(和行動者同隊也可以),由他當下一回合的行動者。注意找的起點是行動者的左手邊,不是被熄滅的那個人的左手邊。

沿順時針方向找人時,找過第 \(n\) 個人之後接著找第 \(1\) 個人。如果一開始所有人就都是同一隊(\(k = 1\)),比賽不進行任何回合就結束,熄滅的火把數是 \(0\)。

請算出比賽結束時總共有幾支火把被熄滅,還有哪一隊要負責營地建設。

下圖是範例 1 從上往下看的樣子:圓圈裡的數字是編號,圓圈外側小方框裡的數字是這個人的隊伍,每個人都拿著點燃的火把。中間的箭頭是順時針方向,也就是每個人的左手邊。

範例 1:6 個人面向中央的營火圍成一圈,順時針依序是第 1 到第 6 個人,分別屬於第 2、2、1、3、1、2 隊;箭頭表示順時針方向

輸入格式

第一行有兩個整數 \(n\) 與 \(k\),代表人數與隊伍數。

第二行有 \(n\) 個整數 \(t_1, t_2, \ldots, t_n\),第 \(i\) 個整數 \(t_i\) 是第 \(i\) 個人所屬的隊伍。

限制

  • \(1 \le k \le n \le 2000\)
  • \(1 \le t_i \le k\)
  • 第 \(1\) 隊到第 \(k\) 隊,每一隊都至少有一個人。

輸出格式

輸出一行,包含兩個整數 \(x\) 與 \(w\),中間以一個空白隔開:\(x\) 是被熄滅的火把總數,\(w\) 是最後要負責營地建設的那一隊。

評分說明

每一筆測試資料的執行時間限制均為 \(2\) 秒,依正確通過的測試資料筆數給分。

子題 分數 額外限制
1 40 \(n < 1000\)
2 60 無額外限制

範例輸入 1

6 3
2 2 1 3 1 2

範例輸出 1

4 2

範例解釋 1

回合 行動者 熄滅誰的火把
1 第 1 人(第 2 隊) 第 3 人(第 1 隊)
2 第 2 人(第 2 隊) 第 4 人(第 3 隊)
3 第 5 人(第 1 隊) 第 6 人(第 2 隊)
4 第 1 人(第 2 隊) 第 5 人(第 1 隊)
  • 第 1 回合:第 1 人左手邊的第 2 人是隊友,跳過;下一位第 3 人是第 1 隊,他的火把被熄滅。接著從第 1 人的左手邊找,第 2 人的火把還點著,滅火器交給第 2 人。
  • 第 2 回合:第 2 人往左找,跳過已熄滅的第 3 人,熄滅第 4 人的火把。第 3 隊已經沒有人火把點燃,但還有第 1、2 兩隊,比賽繼續。從第 2 人的左手邊找,第 3、4 人都已熄滅,滅火器交給第 5 人。
  • 第 3 回合:第 5 人熄滅左手邊第 6 人的火把。從第 5 人的左手邊找,第 6 人已熄滅,再往下繞回第 1 人,滅火器交給第 1 人。
  • 第 4 回合:第 1 人跳過隊友第 2 人、已熄滅的第 3、4 人,熄滅第 5 人的火把。這時火把點燃的只剩第 1、2 人,都是第 2 隊,比賽結束。

一共熄滅 \(4\) 支火把,由第 \(2\) 隊負責營地建設。

範例輸入 2

7 3
1 2 1 3 2 3 2

範例輸出 2

6 2

範例解釋 2

回合 行動者 熄滅誰的火把
1 第 1 人(第 1 隊) 第 2 人(第 2 隊)
2 第 3 人(第 1 隊) 第 4 人(第 3 隊)
3 第 5 人(第 2 隊) 第 6 人(第 3 隊)
4 第 7 人(第 2 隊) 第 1 人(第 1 隊)
5 第 3 人(第 1 隊) 第 5 人(第 2 隊)
6 第 7 人(第 2 隊) 第 3 人(第 1 隊)

第 4 回合的行動者是最後一位第 7 人,他的左手邊繞回第 1 人;第 1 人和他不同隊,火把被熄滅。第 3 隊在第 3 回合結束時就已經沒有人火把點燃,第 6 回合結束時,火把點燃的只剩第 7 人,比賽結束。一共熄滅 \(6\) 支火把,由第 \(2\) 隊負責營地建設。

題目來源

APCS 2026 年 11 月中高級實作題第 1 題。

官方未公布題本,題敘參考 ecc〈APCS 2026 11月中高級〉 整理,細節可能與正式試題有出入。

題目頁說明

快速鍵

主要功能

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

限制

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