結果
| 問題 | No.3588 Already Ready |
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2026-07-10 23:21:57 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 198 ms / 3,000 ms |
| コード長 | 765 bytes |
| 記録 | |
| コンパイル時間 | 243 ms |
| コンパイル使用メモリ | 95,848 KB |
| 実行使用メモリ | 117,760 KB |
| 最終ジャッジ日時 | 2026-07-10 23:22:11 |
| 合計ジャッジ時間 | 9,016 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 69 |
ソースコード
N,K=map(int,input().split())
M=int(input())
A=list(map(int,input().split()))
if A[M-1]<K+2:
print(-1)
exit()
for i in range(N):
A[i]-=1
A[M-1]-=1
if sum(A)%(N+1)!=0:
print(-1)
exit()
p=sum(A)//(N+1)
if min(A)<p:
print(-1)
exit()
result=[-1]*(p+1)
root=[i for i in range(p+1)]
for i in range(N-1,-1,-1):
x=A[i]
win=x-p
if x<=K+1:
r=p
else:
c=K+1-2*win
r=c+win
if r>p:
r=p
if r<=0:
print(-1)
exit()
now=r
for _ in range(win):
h=[]
while True:
h.append(now)
if root[now]==now:
break
now=root[now]
if now==0:
print(-1)
exit()
result[now]=i+1
for pos in h:
root[pos]=now-1
result=result[1:]
result.append(M)
print(len(result))
print(*result)
ゼット