思路
易发现在一个区间中,比较靠前的一可以换成0
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define maxn 100100
using namespace std ;
int tmpp ;
char s[maxn] , t[maxn] ;
int main () {
cin >> s;
int len = strlen(s) ;
for(int i = 1 ; i <= len ; i ++) {
t[i] = s[i] ;
}
for(int i = len - 1 ; i >= 0 ; i --) {
if(s[i] == '1' && tmpp >= 0) {
t[i] = '0' ;
}
int cur = s[i] == '1' ? 1 : -1 ;
tmpp = min(tmpp+cur,cur) ;
}
cout << t << endl ;
return 0 ;
}