为什么case4没过
查看原帖
为什么case4没过
530915
翟翟楼主2023/5/10 21:03
#include<bits/stdc++.h>
using namespace std;
int T,a,b,n;
char s[400002];
int main(){
	for(scanf("%d",&T);T--;){
		scanf("%d%d%s",&a,&b,s+1);
		n=a+b;
		for(int i=1;i<=n;++i){
			if(s[i]=='?'&&s[n-i+1]!='?')
				s[i]=s[n-i+1];
			if(s[i]=='0')--a;
			else if(s[i]=='1')--b;
		}
		for(int i=1;i<=n;++i){
			if(s[i]!=s[n-i+1]){
				a=1;
				break;
			}
			if(s[i]=='?'){
				if(a){
					s[i]=s[n-i+1]='0';
					--a;
					if(i!=n-i+1)--a;
				}
				else if(b){
					s[i]=s[n-i+1]='1';
					--b;
					if(i!=n-i+1)--b;
				}
			}
		}
		puts(a|b?"-1":s+1);
	}
	return 0;
}

2023/5/10 21:03
加载中...