Codeforces Round #713 (Div. 3)刚结束,蒟蒻想来补题(为什么我还是停留在Div. 3的水平)
然而t3总是WA掉第一个点???(提交记录)找了很久也不知道错在哪里,求助大佬
下面是代码:
//C. A-B Palindrome
#include<bits/stdc++.h>
using namespace std;
char t[2*100000+10];
int main()
{
int tt;
cin>>tt;
for(int z=1;z<=tt;++z)
{
bool no_answer=0;
int a,b,len,cnta=0,cntb=0;
cin>>a>>b;
len=a+b;
for(int i=1;i<=len;++i)
cin>>t[i];
if(a%2&&b%2){cout<<-1<<endl;continue;}
for(int i=1;i<=len;++i)//判断是否无解
{
if(t[i]=='?')t[i]=t[len-i+1];
else if(t[i]!=t[len-i+1]){no_answer=1;break;}
}
if(no_answer){cout<<-1<<endl;continue;}
for(int i=1;i<=len;++i)
{
if(t[i]=='0')++cnta;
if(t[i]=='1')++cntb;
}
if(cnta>a||cntb>b){cout<<-1<<endl;continue;}
int aa=a-cnta,bb=b-cntb;
if(len%2&&a%2&&t[(a+b+1)/2]=='?')t[(a+b+1)/2]='0',--aa;
if(len%2&&b%2&&t[(a+b+1)/2]=='?')t[(a+b+1)/2]='1',--bb;
for(int i=1;i<=len/2;++i)
{
if(t[i]=='?'&&aa)t[i]=t[len-i+1]='0',aa-=2;
else if(t[i]=='?')t[i]=t[len-i+1]='1',bb-=2;
}
for(int i=1;i<=len;++i)
cout<<t[i];
cout<<endl;
}
return 0;
}
感谢大佬指教!