[codeforces 1271B] Blocks 模拟
总目录详见https://blog.csdn.net/mrcrack/article/details/103564004
在线测评地址http://codeforces.com/contest/1271/problem/B
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
B - Blocks | GNU C++11 | Accepted | 46 ms | 0 KB |
下面代码对应的
Examples
Input
8 BWWWWWWB
Output
7 1 2 3 4 5 6 7
Input
4 BWBB
Output
-1
Input
5 WWWWW
Output
0
Input
3 BWB
Output
2 1 2
#include <stdio.h>
char S[210];
int b=0,w=0,pos[210],tot=0;
int main(){
int n,i,k;
scanf("%d%s",&n,S+1);
for(i=1;i<=n;i++)
if(S[i]=='B')b++;
else if(S[i]=='W')w++;
if(b==0||w==0){
printf("0\n");
return 0;
}
else if((b%2)&&(w%2)){
printf("-1\n");
return 0;
}else if(b%2==0){
i=1;
while(i<=n){
if(S[i]=='B'){
pos[++tot]=i;
if(i+1<=n&&S[i+1]=='B')i+=2;
else if(i+1<=n&&S[i+1]=='W')S[i+1]='B',i+=1;
}else i++;
}
}else if(w%2==0){
i=1;
while(i<=n){
if(S[i]=='W'){
pos[++tot]=i;
if(i+1<=n&&S[i+1]=='W')i+=2;
else if(i+1<=n&&S[i+1]=='B')S[i+1]='W',i+=1;
}else i++;
}
}
printf("%d\n",tot);
for(i=1;i<=tot;i++)
if(i==1)printf("%d",pos[i]);
else printf(" %d",pos[i]);
printf("\n");
return 0;
}