题解 | 小红的01子序列构造(easy)

小红的01子序列构造(easy)

https://www.nowcoder.com/practice/ee0b6c6baa2642c182df8b4390126f9a

#include <iostream>
#include <string>

using namespace std;
int cnt[3];

int main() {
    int n;
    long long k;
    cin>>n>>k;
    string s;
    cin>>s;
    long long res = 0;
    int j = 0;
    int l = 0, r = 0;
    for(int i = 0;i < n;i++){
        if(s[i] == '1'){
            res += cnt[0];
            cnt[1]++;
            // cout<<i<<" "<<cnt[1]<<"\n";
        }else{
            cnt[0]++;
            // cout<<i<<" "<<cnt[0]<<"\n";
        }
        while(res > k){
            if(s[j] == '1'){
                cnt[1]--;
                // cout<<i<<" "<<cnt[1]<<"\n";
            }else{
                cnt[0]--;
                res -= cnt[1];
                // cout<<i<<" "<<cnt[0]<<"\n";
            }
            j++;
        }
        if(res == k){
            l = j + 1;
            r = i + 1;
            break;
        }
    }
    if(l == 0 && r == 0){
        cout<<-1;
    }else{
        cout<<l<<" "<<r;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧! 对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
你都用vibe codi...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务