AT_abc380_c

zjj2024

2024-11-18 13:13:27

Solution

思路

模拟即可。

S_i=1S_{i-1}=0 时,发现这肯定是一个整块的分割位置。

计数一下即可。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    string s;
    int k,n,cnt=0;
    cin>>n>>k>>s;
    s=' '+s;
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='1'&&s[i-1]!='1')cnt++;
        if(cnt==k)
        {
            string t0;
            int j;
            for(j=i-1;j>=1;j--)
            {
                if(s[j]=='1')break;
                t0+='0';
            }
            for(int k=1;k<=j;k++)cout<<s[k];
            int k;
            for(k=i;k<=n;k++)
            {
                if(s[k]!='1')break;
                cout<<s[k];
            }
            cout<<t0;
            for(int p=k;p<=n;p++)cout<<s[p];
            cout<<'\n';
            return 0;
        }
    }
    return 0;
}