結果
| 問題 | No.3715 Tomorrow is MONDAY!!!!!! |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 01:47:02 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,301 bytes |
| 記録 | |
| コンパイル時間 | 78 ms |
| コンパイル使用メモリ | 81,408 KB |
| 実行使用メモリ | 115,712 KB |
| 最終ジャッジ日時 | 2026-09-19 01:47:07 |
| 合計ジャッジ時間 | 4,847 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 WA * 16 |
ソースコード
# https://yukicoder.me/problems/no/3715
def main():
K, N = map(int, input().split())
D = list(map(int, input().split()))
d_prev = 0
d_nexts = 0
for i in range(K):
d_nexts += D[i] - 1
start_n = 0
for i in range(K):
d_nexts -= D[i] - 1
end_n = (start_n + D[i] - 1) % N
answer = float("inf")
most_n = (D[i] // N) + (1 if D[i] % N > 0 else 0)
x = start_n + D[i]
current_n = (x // N) + (1 if x % N > 0 else 0)
if start_n > 0:
current_n -= 1
# 全体をシフト
if most_n > current_n:
if start_n > 0 and d_prev >= start_n:
answer = min(answer, start_n)
if d_nexts >= N - start_n:
answer = min(answer, start_n)
# D[i]自体を増やす
need_n = start_n if start_n > 0 else N
if d_prev >= need_n:
answer = min(answer, need_n)
need_n = N - end_n
if d_nexts >= need_n:
answer = min(answer, need_n)
if answer == float("inf"):
print(-1)
else:
print(answer)
start_n += D[i]
start_n %= N
d_prev += D[i] - 1
if __name__ == "__main__":
main()