/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 6ms 588.0 KiB
#3 Wrong Answer 6ms 532.0 KiB

Code

// Bismillahir Rahmanir Raheem
/* contest time
    1. No use of mobile (must);
    2. Think about problem not solution.
    3. Find full solution
    4. try to proof or find cases
    5. write  down solution
    6. then code

    practice time
    1. think for straigt half an hour .
    2. try to learn
    3. dont make the solve count
    4. make the learn count
    */
// READ PROBLEM AGAIN Andddd AGAIN.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define nl "\n"

#define faster ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);

void solve(int t_case)
{
	int n, k;
	cin >> n >> k;
	string s;
	cin >> s;
	vector<int> v;
	char cur = s[0];
	int cnt = 1;
	for (int i = 1; i < n; i++) {
		if (s[i] == cur) {
			cnt++;
		} else {
			if (cur == '1') {
				v.push_back(cnt);
			}
			cur = s[i];
			cnt = 1;
		}
	}
	if (cur == '1') {
		v.push_back(cnt);
	}
	if (v.empty()) {
		cout << 0 << nl;
		return;
	}
	int total_one = 0;
	for (int x : v) {
		total_one += x;
	}
	int m = v.size();
	int win_size = min(k + 1, m);
	if (win_size >= m) {
		cout << total_one << nl;
		return;
	}
	int cur_sum = 0;
	for (int i = 0; i < win_size; i++) {
		cur_sum += v[i];
	}
	int max_sum = cur_sum;
	for (int i = win_size; i < m; i++) {
		cur_sum += v[i] - v[i - win_size];
		max_sum = max(max_sum, cur_sum);
	}
	cout << max_sum << nl;
}

int32_t main()
{
	faster;
	int t;
	cin >> t;
	for (int i = 1; i <= t; i++)
		solve(i);
	return 0;
}

Information

Submit By
Type
Submission
Problem
P1159 Binary String
Contest
Brain Booster #8
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-17 15:26:31
Judged At
2025-02-17 15:26:31
Judged By
Score
0
Total Time
6ms
Peak Memory
588.0 KiB