[cpp] палиндром

Viewer

copydownloadembedprintName: палиндром
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int t, a, b;
  5. string s;
  6. cin >> t;
  7. for (int i=0; i<t; i++){
  8.     cin >> a >> b;
  9.     cin >> s;
  10.     int n=a+b;
  11.     if ((a!=b)&&(a%2!=0)&&((n)%2!=0)){
  12.         s[((n)/2)+1]=0;
  13.         a--;
  14.     }
  15.     else{
  16.         if ((b!=a)&&(b%2!=0)&&((n)%2!=0)){
  17.             s[((n)/2)+1]=1;
  18.             b--;
  19.         }
  20.     }
  21.     for (int j=0; j<n; j++){
  22.         if (s[j]==0){
  23.             a--;
  24.         }
  25.         if (s[j]==1){
  26.             b--;
  27.         }
  28.     }
  29.     for (int j=0; j<((n)/2)+1; j++){
  30.         if (s[j]==1){
  31.             s[(n)-j-1]=1;
  32.             b--;
  33.         }
  34.         else{
  35.             if (s[(n)-j-1]==1){
  36.                 s[j]=1;
  37.                 b--;
  38.             }
  39.         }
  40.         if (s[j]==0){
  41.             s[(n)-j-1]=0;
  42.             a--;
  43.         }
  44.         else{
  45.             if (s[(n)-j-1]==0){
  46.                 s[j]=0;
  47.                 a--;
  48.             }
  49.         }
  50.         if ((s[j]=='?') && (s[(n)-j-1]=='?')){
  51.             if (a>=2){
  52.                 s[j]=0;
  53.                 s[(n)-j-1]=0;
  54.                 a=a-2;
  55.             }
  56.             else{
  57.                 if (b>=2){
  58.                     s[j]=1;
  59.                     s[(n)-j-1]=1;
  60.                     b=b-2;
  61.                 }
  62.                 else{
  63.                     cout << "-1";
  64.                     break;
  65.                 }
  66.             }
  67.         }
  68.     }
  69.     cout << s;
  70.     
  71. }
  72. }

Editor

You can edit this paste and save as new:


File Description
  • палиндром
  • Paste Code
  • 26 Sep-2021
  • 1.41 Kb
You can Share it: