結果
| 問題 |
No.78 クジ付きアイスバー
|
| コンテスト | |
| ユーザー |
ntuda
|
| 提出日時 | 2025-01-07 22:01:27 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,012 bytes |
| コンパイル時間 | 482 ms |
| コンパイル使用メモリ | 82,364 KB |
| 実行使用メモリ | 54,284 KB |
| 最終ジャッジ日時 | 2025-01-07 22:01:31 |
| 合計ジャッジ時間 | 3,400 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 WA * 5 |
ソースコード
N, K = map(int,input().split())
S = [int(s) for s in input()]
pt = 0
mon = 0
cnt = 0
P = []
P2 = []
while cnt < N and pt < N:
if pt == 0:
mon += 1
pt += S[cnt % N]
P.append(cnt)
cnt += 1
if cnt >= K:
print(len(P))
exit()
while cnt < N and pt > 0 and pt < N:
pt += S[cnt % N] - 1
cnt += 1
if cnt >= K:
print(len(P))
exit()
while cnt < N * 2:
if pt == 0:
mon += 1
pt += S[cnt % N]
P2.append(cnt % N)
cnt += 1
while cnt < 2 * N and pt > 0:
pt += S[cnt % N]
cnt += 1
pt -= 1
if len(P2) == 0:
print(len(P))
exit()
'''
1巡目
len(P)払ってN+P2[0]個買う
2巡目以降
N個あたりlen(P2)払う
↓
K -= N + P2[0]
ans += K // N * len(P2) 払う
x = K % N 余る
bisect(P2,x)払う
'''
from bisect import bisect_left
ans = len(P)
K -= N + P2[0]
t = K // N
ans += t * len(P2)
ans += bisect_left(P2,K % N)
print(ans)
ntuda