結果

問題 No.3266 岩井星人は見ずにはいられない
ユーザー cho435
提出日時 2025-09-06 16:58:36
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 5 ms / 2,000 ms
コード長 1,104 bytes
コンパイル時間 2,061 ms
コンパイル使用メモリ 195,264 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-09-06 16:58:40
合計ジャッジ時間 3,130 ms
ジャッジサーバーID
(参考情報)
judge / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, s, t) for (ll i = s; i < (ll)(t); i++)
#define all(x) begin(x), end(x)

template <class T> bool chmin(T& x, T y) {
	return x > y ? (x = y, true) : false;
}
template <class T> bool chmax(T& x, T y) {
	return x < y ? (x = y, true) : false;
}

struct io_setup {
	io_setup() {
		ios::sync_with_stdio(false);
		cin.tie(nullptr);
		cout << fixed << setprecision(15);
	}
} io_setup;

void solve() {
	ll n, a;
	cin >> n >> a;
	string s;
	cin >> s;
	ll ans = 0;
	ll x = 1200;
	rep(lp, 0, 10) {
		int bx = x;
		ll ba = a;
		int flg = 0;
		rep(i, 0, n) {
			ans++;
			if (s[i] == '0') x--;
			else if (x < 1200) {
				a--;
				x++;
			} else flg = 1;
			if (a <= 0) {
				cout << ans << "\n";
				return;
			}
		}
		if (bx == x) {
			ll ad = (ba - a);
			ll tmp = (a - 1) / ad;
			a -= ad * tmp;
			ans += n * tmp;
		} else if (!flg) {
			ll ad = (ba - a);
			ll tmp = (a - 1) / ad;
			ll dx = (x - bx);
			a -= ad * tmp;
			ans += n * tmp;
			x += dx * tmp;
		}
	}
}

int main() {
	int t = 1;
	// cin >> t;
	while (t--) solve();
}
0