fork download
  1. #include<cstdio>
  2. using namespace std;
  3. int T,A,B;
  4. char S[2<<17];
  5. main()
  6. {
  7. scanf("%d",&T);
  8. for(;T--;)
  9. {
  10. scanf("%d%d%s",&A,&B,S);
  11. int N=A+B;
  12. for(int i=0;i<N;i++)
  13. {
  14. if(S[i]=='0')A--;
  15. if(S[i]=='1')B--;
  16. }
  17. for(int i=0;i<N;i++)if(S[i]=='?')
  18. {
  19. int j=N-i-1;
  20. if(S[j]!='?')
  21. {
  22. if(S[j]=='0')A--;
  23. else B--;
  24. S[i]=S[j];
  25. }
  26. }
  27. if(N%2==1)
  28. {
  29. int mid=N/2;
  30. if(S[mid]=='?')
  31. {
  32. if(A%2==1)A--,S[mid]='0';
  33. else B--,S[mid]='1';
  34. }
  35. }
  36. for(int i=0;i<N;i++)if(S[i]=='?')
  37. {
  38. int j=N-i-1;
  39. if(A>=2)
  40. {
  41. A-=2;
  42. S[i]=S[j]='0';
  43. }
  44. else
  45. {
  46. B-=2;
  47. S[i]=S[j]='1';
  48. }
  49. }
  50. bool ok=A==0&&B==0;
  51. for(int i=0;i<N;i++)if(S[i]!=S[N-i-1])ok=false;
  52. puts(ok?S:"-1");
  53. }
  54. }
  55.  
Success #stdin #stdout 0s 5444KB
stdin
1
3 4
1100011
stdout
1100011