結果
問題 | No.3051 Make All Divisible |
ユーザー |
👑 |
提出日時 | 2025-02-02 15:46:26 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,253 bytes |
コンパイル時間 | 333 ms |
コンパイル使用メモリ | 82,124 KB |
実行使用メモリ | 77,124 KB |
最終ジャッジ日時 | 2025-02-08 15:04:47 |
合計ジャッジ時間 | 12,738 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 30 TLE * 1 |
ソースコード
def solve():n, K = map(int, input().split())A = list(map(int, input().split()))A.sort()C = [a % K for a in A]if sum(C) % K != 0:print(-1)returndef ok(x):tot = 0ma = 0for a, c in zip(A, C):d = (x - c) // K * K + cd = min(d, a)tot += dma = max(ma, d)if d < 0:return Falsereturn x <= tot // Krr = A[-K] - 1 + Kinf = 1 << 62ans = inffor d in range(K):ma = (rr - d) // K * K + dif not ok(ma):continuer = ma // Kl = -1while r - l > 1:mid = (l + r) // 2if ok(mid * K + d):r = midelse:l = midr = r * K + dtot = 0mac = 0for a, c in zip(A, C):d = (r - c) // K * K + cd = min(d, a)tot += dif d == r:mac += 1tot //= Kif r < K:mac = 0tmp = max(r, tot - mac)ans = min(ans, tmp)if ans == inf:print(-1)else:print(ans)for _ in range(int(input())):solve()