20pts 求助
查看原帖
20pts 求助
782768
Mierstan085楼主2024/7/25 09:44

rt,WA on #2~7, #9~10

#include <bits/stdc++.h>
using namespace std;

int hre[1005];
string s;
int n;

void solve(){
    int sv = 0, cnt = 0, len = s.size();
    memset(hre, 0, sizeof(hre));
    
    if (len < n - 1 || len > n + 1){
        puts("-1");
        return ;
    }

    for (int i = 0; i < len; i ++){
        if (s[i] == '1'){
            cnt ++;
            sv += (i + 1);
            hre[i + 1] = hre[i] + 1;
        }else hre[i + 1] = hre[i];
    }
    
    if (len == n){
        if (!(sv % (n + 1)) || !sv){
            cout << s << '\n';
            return ;
        }else if (s[(sv % (n + 1)) - 1] == '1'){
            s[(sv % (n + 1)) - 1] --;
            cout << s << '\n';
            return ;
        }else{
            puts("-1");
            return ;
        }
    }
    
    if (len < n){
        for (int i = 0; i <= len; i ++){
            if ((sv + cnt - hre[i]) % (n + 1) == 0){
                s.insert(i, "1");
                cout << s << '\n';
                return ;
            }
        }
        
        puts("-1");
        return ;
    }
    
    if (len > n){
        for (int i = 0; i < len; i ++){
            if ((sv - (cnt - hre[i + 1])) % (n + 1) == 0 && s[i] == '0'){
                s.erase(i, 1);
                cout << s << '\n';
                return ;
            }else if ((sv - (cnt - hre[i + 1]) - i - 1) % (n + 1) == 0 && s[i] == '1'){
                s.erase(i, 1);
                cout << s << '\n';
                return ;
            }
        }
        
        puts("-1");
        return ;
    }
}

int main(){
    cin >> n;
    while (cin >> s) solve();
}
2024/7/25 09:44
加载中...