Advertisement
LZsolar

CUBE-091: Mini Contest

Apr 7th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. char a[100010],sav[100010];
  4. int n,g,mxg=2e9,st;
  5. bool check=false;
  6.  
  7. void fill(int x){
  8.     if(a[x]!='X'||x>n){
  9.         if(g<mxg){
  10.            mxg=g;
  11.            for(int i=st;i<x;i++){
  12.                a[i]=sav[i];
  13.            }
  14.         }
  15.        
  16.         if(g==0){check=true;}
  17.         return;
  18.     }
  19.    
  20.     if(sav[x-1]!='B'&&sav[x+1]!='B'){sav[x]='B'; fill(x+1);sav[x]='X';}
  21.     if(sav[x-1]!='W'&&sav[x+1]!='W'&&!check){sav[x]='W'; fill(x+1);sav[x]='X';}
  22.     if(sav[x-1]!='G'&&sav[x+1]!='G'&&!check){sav[x]='G';g++; fill(x+1);sav[x]='X'; g--;}
  23.  
  24.     return;
  25. }
  26.  
  27. int main(){
  28.     scanf("%d",&n);
  29.     for(int i=1;i<=n;i++){
  30.         scanf(" %c",&a[i]); sav[i]=a[i];
  31.     }
  32.    
  33.     for(int i=1;i<=n;i++){
  34.         if(a[i]=='X'){
  35.             g=0; mxg=2e9; st=i; check=false;
  36.             fill(i);
  37.         }
  38.     }
  39.    
  40.     for(int i=1;i<=n;i++){
  41.         printf("%c",a[i]);
  42.     }
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement