[cpp] палиндром
Viewer
- #include <iostream>
- using namespace std;
- int main(){
- int t, a, b;
- string s;
- cin >> t;
- for (int i=0; i<t; i++){
- cin >> a >> b;
- cin >> s;
- int n=a+b;
- if ((a!=b)&&(a%2!=0)&&((n)%2!=0)){
- s[((n)/2)+1]=0;
- a--;
- }
- else{
- if ((b!=a)&&(b%2!=0)&&((n)%2!=0)){
- s[((n)/2)+1]=1;
- b--;
- }
- }
- for (int j=0; j<n; j++){
- if (s[j]==0){
- a--;
- }
- if (s[j]==1){
- b--;
- }
- }
- for (int j=0; j<((n)/2)+1; j++){
- if (s[j]==1){
- s[(n)-j-1]=1;
- b--;
- }
- else{
- if (s[(n)-j-1]==1){
- s[j]=1;
- b--;
- }
- }
- if (s[j]==0){
- s[(n)-j-1]=0;
- a--;
- }
- else{
- if (s[(n)-j-1]==0){
- s[j]=0;
- a--;
- }
- }
- if ((s[j]=='?') && (s[(n)-j-1]=='?')){
- if (a>=2){
- s[j]=0;
- s[(n)-j-1]=0;
- a=a-2;
- }
- else{
- if (b>=2){
- s[j]=1;
- s[(n)-j-1]=1;
- b=b-2;
- }
- else{
- cout << "-1";
- break;
- }
- }
- }
- }
- cout << s;
- }
- }
Editor
You can edit this paste and save as new: