結果
問題 | No.78 クジ付きアイスバー |
ユーザー |
![]() |
提出日時 | 2025-01-07 22:09:38 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 59 ms / 5,000 ms |
コード長 | 993 bytes |
コンパイル時間 | 462 ms |
コンパイル使用メモリ | 82,352 KB |
実行使用メモリ | 52,480 KB |
最終ジャッジ日時 | 2025-01-07 22:09:42 |
合計ジャッジ時間 | 3,312 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 35 |
ソースコード
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 * ans = len(P) K -= N t = K // N ans += t * len(P2) ans += bisect_left(P2,K % N) print(ans)