构造数据 P5595 【XR-4】歌唱比赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
XYZXYZ错误原因在于
一旦有一位是z代表两者点赞数暂时相同
如果z后面不是z
137 148 即第一位相同 后两位不同 则不满足两者点赞数相等
因此我们从前往后检查字符串 一旦遇到z后面不是z的情况返回-1即可
对于满足条件的输入
当一个人领先我们让他输出2而另一个输出1即可
相等则大家都输出3.。
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char str[1000010];
int a[1000010],b[1000010];
cin>>str;
int m=strlen(str);
int flag=0,num=0;
int mask=0;
int cnt=0;
while(cnt<m){
if(str[cnt]=='Z'){
mask=1;
}
if(mask==1&&str[cnt]!='Z'){
flag=1;
cout<<-1;
break;
}
cnt++;
}
if(flag==0){
for(int i=0;i<m;i++){
if(str[i]=='X'){
a[i]=2;b[i]=1;
}else if(str[i]=='Y'){
a[i]=1;b[i]=2;
}else{
a[i]=3;b[i]=3;
}
}
for(int i=0;i<m;i++){
cout<<a[i];
}
cout<<endl;
for(int i=0;i<m;i++){
cout<<b[i];
}
}
return 0;
}
注意用m来得到字符串长度 否则每次for循环都调用一次strlen 函数会tle.