Untitled

Anonymous
plain_text
02/21/2026 5:20 PM
2.1 KB
28
Indexable
============A=============
void solve(){
    int n;
    cin>>n;
    string s;
    cin>>s;
    int blocks=1,grTwo=0;
    for(int i=1;i<n;i++){
        if(s[i]==s[i-1]) grTwo=1;
        else blocks++;
    }
    if(s[0]==s[n-1]) cout<<blocks<<endl;
    else cout<<blocks+grTwo<<endl;
}

============B=============
void solve(){
    int n;
    cin>>n;
    string s;
    cin>>s;
    vector<int> pos0,pos1;
    for(int i=0;i<n;i++){
        if(s[i]=='0') pos0.push_back(i+1);
        else pos1.push_back(i+1);
    }
    int c0=pos0.size();
    int c1=pos1.size();
    if (c1 % 2 == 0) {
        cout << c1 << endl;
        for (int x : pos1) cout << x << " ";
        cout << endl;
    } 
    else if (c0 % 2 == 1) {
        cout << c0 << endl;
        for (int x : pos0) cout << x << " ";
        cout << endl;
    } 
    else cout<<"-1"<<endl;
} 

============C=============
ll solve(){
    ll n,h,k;
    cin>>n>>h>>k;
    vector<ll> a(n);
    cin>>a;
    ll sum=0;
    for(auto x:a) sum+=x;
    ll comp=0,rem=0;
    if(h%sum==0){
        comp=(h/sum)-1;
        rem=sum;
    }
    else{
        comp=h/sum;
        rem=h%sum;
    }
    ll time=comp*(n+k);
    vector<ll> suff_max(n);
    suff_max[n-1]=a[n-1];
    for(int i=n-2;i>=0;i--) suff_max[i]=max(a[i],suff_max[i+1]);
    ll power=0,min_num=INT_MAX;
    for(int i=0;i<n;i++){
        power+=a[i];
        min_num=min(min_num,a[i]);
        if(power>=rem) return time+i+1;
        else{
            assert(i!=n-1);
            ll swap_power=power-min_num+suff_max[i+1];
            if(swap_power>=rem) return time+i+1;
        }
    }
    assert(false);
    return -1;
}  

Editor is loading...
Leave a Comment