結果
問題 |
No.3266 岩井星人は見ずにはいられない
|
ユーザー |
![]() |
提出日時 | 2025-09-06 15:24:28 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 2,292 bytes |
コンパイル時間 | 2,732 ms |
コンパイル使用メモリ | 275,728 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-09-06 15:24:34 |
合計ジャッジ時間 | 3,915 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 31 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = int64_t; ll N, A; string S; void input() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> A >> S; } void solve() { ll zeros = count(S.begin(), S.end(), '0'); ll ones = count(S.begin(), S.end(), '1'); ll rate = 1200; ll ac = 0; ll ans = 0; if (zeros > ones) { while (ac < A) { ll r = rate; ll mx = rate; for (ll i=0; i<N; ++i) { if (S[i] == '0') { --r; } else { if (r < 1200) ++r; } mx = max(mx, r); } if (mx < 1200) { ll rem = A - ac; ll loop = (rem - 1) / ones; ans += loop * N; ac += loop * ones; rate += loop * (ones - zeros); } for (ll i=0; i<N; ++i) { ++ans; if (S[i] == '0') { --rate; } else { if (rate < 1200) { ++ac; ++rate; } } if (ac == A) { cout << ans << "\n"; return; } } } } else { while (ac < A) { ll r = rate; for (ll i=0; i<N; ++i) { if (S[i] == '0') { --r; } else { if (r < 1200) ++r; } } if (r == rate) { ll rem = A - ac; ll loop = (rem - 1) / zeros; ans += loop * N; ac += loop * zeros; } for (ll i=0; i<N; ++i) { ++ans; if (S[i] == '0') { --rate; } else { if (rate < 1200) { ++ac; ++rate; } } if (ac == A) { cout << ans << "\n"; return; } } } } } int main() { input(); solve(); return 0; } /* 考察 */