Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define lli long long int
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- int t;
- cin >> t;
- while(t--)
- {
- lli ag,bg;
- cin >> ag >> bg;
- string s;
- cin >>s;
- for(lli i=0; i<s.size(); i++)
- {
- if(s[i]=='0')
- {
- ag--;
- }
- else if(s[i]=='1')
- {
- bg--;
- }
- }
- for(lli i=0; i<(s.size()/2); i++)
- {
- if((s[i]=='?')&&(s[(s.size()-1)-i]!='?'))
- {
- lli pos=(s.size()-1)-i;
- if(s[pos]=='1')
- {
- s[i]='1';
- bg--;
- }
- else if(s[pos]=='0')
- {
- s[i]='0';
- ag--;
- }
- }
- if((s[i]!='?')&&(s[(s.size()-1)-i]=='?'))
- {
- lli pos=(s.size()-1)-i;
- if(s[i]=='1')
- {
- s[pos]='1';
- bg--;
- }
- else if(s[i]=='0')
- {
- s[pos]='0';
- ag--;
- }
- }
- }
- for(lli i=0; i<(s.size()/2); i++)
- {
- lli pos=(s.size()-1)-i;
- if((s[i]=='?')&&(s[pos]=='?'))
- {
- if(ag>=2)
- {
- s[i]='0';
- s[pos]='0';
- ag-=2;
- }
- else if(bg>=2)
- {
- s[i]='1';
- s[pos]='1';
- bg-=2;
- }
- }
- }
- if((s.size())%2)
- {
- lli pos = s.size()/2;
- if(s[pos]=='?')
- {
- if(ag>0)
- {
- s[pos]='0';
- ag--;
- }
- else if(bg>0)
- {
- s[pos]='1';
- bg--;
- }
- }
- }
- string s2=s;
- reverse(s2.begin(),s2.end());
- size_t pos_q = s.find_first_of('?');
- if((s2==s)&&(pos_q==std::string::npos)&&(ag==0)&&(bg==0))
- {
- cout << s <<"\n";
- }
- else
- {
- cout << -1 <<"\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement