結果
問題 |
No.3051 Make All Divisible
|
ユーザー |
|
提出日時 | 2025-02-02 15:17:30 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,123 bytes |
コンパイル時間 | 458 ms |
コンパイル使用メモリ | 82,272 KB |
実行使用メモリ | 77,304 KB |
最終ジャッジ日時 | 2025-02-08 15:04:17 |
合計ジャッジ時間 | 12,546 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 WA * 25 |
ソースコード
def solve(): n, K = map(int, input().split()) A = list(map(int, input().split())) C = [a % K for a in A] if sum(C) % K != 0: print(-1) return def ok(x): tot = 0 ma = 0 for a, c in zip(A, C): d = (x - c) // K * K + c d = min(d, a) tot += d ma = max(ma, d) return ma <= tot // K A.sort() rr = A[-K] - 1 + K ans = 1 << 60 for d in range(K): ma = (rr - d) // K * K + d if not ok(ma): continue r = ma // K l = -1 while r - l > 1: mid = (l + r) // 2 if ok(mid * K + d): r = mid else: l = mid tot = 0 mac = 0 r = r * K + d for a, c in zip(A, C): d = (r - c) // K * K + c d = min(d, a) tot += d if d == r: mac += 1 tot //= K minus = min(mac, tot - r) tot -= minus ans = min(ans, tot) print(ans) for _ in range(int(input())): solve()