RT WA #11(我知道数据随机,但每次都在这WA)
Wrong Answer.wrong answer 1st words differ - expected:
'111111011011111111111111111111...1101111111011110011111111111111',
found:
'101110111111111111111111111101...1101110111011111011111111110110'
思路是把所有0的位置扔进a数组,在读入的字符串s中扫一遍
sans为答案字符串qwq
st 是temp string
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,a[N];
char s[N],sans[N],st[N];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>s;
int cnt=0,fir,len=strlen(s);
for(int i=0;i<len;i++){
sans[i]=s[i];
if(s[i]=='0'){
if(cnt==0)fir=i;
a[++cnt]=i-fir;
}
}
int c,ans=INT_MIN;
for(int i=0;i<len;i++){
c=0;
for(int i=0;i<len;i++)st[i]=s[i];
for(int j=1;j<=cnt;j++){
if(s[i+a[j]]=='1')c++,st[fir+a[j]]='1';
}
// cout<<st<<'\n';
if(c>ans){
ans=c;
for(int i=0;i<len;i++)sans[i]=st[i];
}
}
int pos=0,slen=strlen(sans);
while(sans[pos]=='0'){
pos++;
if(pos==slen){
cout<<0;
return 0;
}
}
for(int i=pos;i<slen;i++)cout<<sans[i];
return 0;
}