Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- char ar[100010];
- void BB_WW_even(int x,int y,char ch){
- int c=1;
- for(int i=x+1;i<y;i++){
- if((c%2==1&&ch=='W')||(c%2==0&&ch=='B')) ar[i]='B';
- else ar[i]='W';
- c++;
- }
- }
- void BB_WW_odd(int x,int y,char ch){
- int c=1;
- for(int i=x+1;i<y-1;i++){
- if((c%2==1&&ch=='W')||(c%2==0&&ch=='B')) ar[i]='B';
- else ar[i]='W';
- c++;
- }
- ar[y-1]='G';
- }
- int main(){
- int n,x=0,y=0;
- bool have;
- scanf("%d",&n);
- for(int i=1;i<=n;i++){
- scanf(" %c",&ar[i]);
- if(ar[i]=='X') have=true;
- else y=i;
- if((x!=0 || y!=0) && x!=y){
- //printf("%d %d\n",x,y);
- if(x==0 && y!=x+1 && (y-x)%2==1)
- BB_WW_even(x,y,(ar[y]=='B')? 'W':'B');
- else if(x==0 && y!=x+1 && (y-x)%2==0)
- BB_WW_even(x,y,ar[i]);
- else if(ar[x]==ar[y] && y!=x+1 && (y-x)%2==0) BB_WW_even(x,y,ar[x]);
- else if(ar[x]==ar[y] && y!=x+1 && (y-x)%2==1) BB_WW_odd(x,y,ar[x]);
- else if(ar[x]!=ar[y] && y!=x+1 && (y-x)%2==1) BB_WW_even(x,y,ar[x]);
- else if(ar[x]!=ar[y] && y!=x+1 && (y-x)%2==0) BB_WW_odd(x,y,ar[x]);
- }
- x=y;
- }
- if(have && x==0 &&y==0){
- for(int i=1;i<=n;i++) {
- if(i%2==0) printf("W");
- else printf("B");
- }
- return 0;
- }
- for(int i=1;i<=n;i++){
- if(ar[i]=='X'){
- BB_WW_even(i-1,n+1,ar[i-1]);
- }
- printf("%c",ar[i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment