結果
| 問題 | No.115 遠足のおやつ |
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 2023-04-18 11:49:49 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 39 ms / 5,000 ms |
| コード長 | 762 bytes |
| コンパイル時間 | 191 ms |
| コンパイル使用メモリ | 81,936 KB |
| 実行使用メモリ | 52,352 KB |
| 最終ジャッジ日時 | 2024-10-13 10:00:04 |
| 合計ジャッジ時間 | 2,980 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 40 |
ソースコード
# 辞書順最小なので前が重要
# Nの前K個を取る、Dがそれ未満ならアウト、Dが最大K個超でもアウト
# 前K個がD未満なら、最後を右に動かせるところまで動かす、の繰り返し
N, D, K = map(int, input().split())
if D < K*(K+1)//2 or D > (N*(N+1)//2-(N-K)*(N-K+1)//2):
print(-1)
exit()
last = N
s = K*(K+1)//2
ans = [a for a in range(1, K+1)]
for i in range(K-1, -1, -1):
current = i+1
gap = D - s
if gap == 0:
break
elif gap >= last-current:
s += (-current+last)
ans[i] = last
last -= 1
else:
num = current + gap
s += (-current+num)
ans[i] = num
last = num-1
#print('last', last, 's', s, 'ans', ans)
print(*ans)
FromBooska