YEZAELP

CUBE-091: Mini Contest

Jun 8th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. char ar[100010];
  4. void BB_WW_even(int x,int y,char ch){
  5.     int c=1;
  6.     for(int i=x+1;i<y;i++){
  7.         if((c%2==1&&ch=='W')||(c%2==0&&ch=='B')) ar[i]='B';
  8.         else ar[i]='W';
  9.         c++;
  10.     }
  11. }
  12. void BB_WW_odd(int x,int y,char ch){
  13.     int c=1;
  14.     for(int i=x+1;i<y-1;i++){
  15.         if((c%2==1&&ch=='W')||(c%2==0&&ch=='B')) ar[i]='B';
  16.         else ar[i]='W';
  17.         c++;
  18.     }
  19.     ar[y-1]='G';
  20. }
  21.  
  22. int main(){
  23.  
  24.     int n,x=0,y=0;
  25.     bool have;
  26.     scanf("%d",&n);
  27.     for(int i=1;i<=n;i++){
  28.         scanf(" %c",&ar[i]);
  29.         if(ar[i]=='X') have=true;
  30.         else y=i;
  31.         if((x!=0 || y!=0) && x!=y){
  32.             //printf("%d %d\n",x,y);
  33.             if(x==0 && y!=x+1 && (y-x)%2==1)
  34.                 BB_WW_even(x,y,(ar[y]=='B')? 'W':'B');
  35.             else if(x==0 && y!=x+1 && (y-x)%2==0)
  36.                 BB_WW_even(x,y,ar[i]);
  37.             else if(ar[x]==ar[y] && y!=x+1 && (y-x)%2==0) BB_WW_even(x,y,ar[x]);
  38.             else if(ar[x]==ar[y] && y!=x+1 && (y-x)%2==1) BB_WW_odd(x,y,ar[x]);
  39.             else if(ar[x]!=ar[y] && y!=x+1 && (y-x)%2==1) BB_WW_even(x,y,ar[x]);
  40.             else if(ar[x]!=ar[y] && y!=x+1 && (y-x)%2==0) BB_WW_odd(x,y,ar[x]);
  41.         }
  42.         x=y;
  43.     }
  44.  
  45.     if(have && x==0 &&y==0){
  46.         for(int i=1;i<=n;i++) {
  47.             if(i%2==0) printf("W");
  48.             else printf("B");
  49.         }
  50.         return 0;
  51.     }
  52.  
  53.     for(int i=1;i<=n;i++){
  54.         if(ar[i]=='X'){
  55.             BB_WW_even(i-1,n+1,ar[i-1]);
  56.         }
  57.         printf("%c",ar[i]);
  58.     }
  59.     return 0;
  60. }
Add Comment
Please, Sign In to add comment