結果
問題 |
No.3051 Make All Divisible
|
ユーザー |
![]() |
提出日時 | 2025-03-09 01:59:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 695 ms / 2,000 ms |
コード長 | 1,298 bytes |
コンパイル時間 | 618 ms |
コンパイル使用メモリ | 82,400 KB |
実行使用メモリ | 80,140 KB |
最終ジャッジ日時 | 2025-06-20 02:27:00 |
合計ジャッジ時間 | 5,078 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 |
ソースコード
import sys input = sys.stdin.readline from heapq import heappop,heappush T=int(input()) for tests in range(T): n,k=map(int,input().split()) A=list(map(int,input().split())) SUM=sum(A) if SUM%k!=0: print(-1) continue flag=1 for a in A: if a%k!=0: flag=0 break if flag: print(0) continue A2=[] for a in A: if a!=0: A2.append(a) A=A2 n=len(A) if n<k: print(-1) continue if n==k: B=[a%k for a in A] x=B[0] flag=1 for b in B: if x!=b: flag=0 break if flag: print(x) else: print(-1) continue B=[] C=[] SUM=0 MAX=0 for a in A: if a>=k: B.append((a%k,a//k)) else: C.append(a) SUM+=a%k MAX=max(MAX,a%k) if MAX<=SUM//k: print(SUM//k) continue B.sort() ANS=-1 while B: x,com=heappop(B) if com==0: continue MAX=max(MAX,x+k) SUM+=k heappush(B,(x+k,com-1)) if MAX<=SUM//k: ANS=SUM//k break print(ANS)