【XR-4】歌唱比赛
题目描述
小 X 参加了一场歌唱比赛。
经过一路鏖战,小 X 终于挺进了决赛,他的对手是小 Y。
这场歌唱比赛的冠军是由点赞数决定的,谁的点赞数高,谁就能夺冠。
小 X 和小 Y 依次演唱完自己的最后一首歌曲后,他们最终的点赞数确定了下来。
揭晓冠军的时刻终于到来了,主持人为了增加悬念,决定从小 X 与小 Y 的点赞数的最后一位开始,依次比较。
比如,小 X 的点赞数是
37
37
37,小 Y 的点赞数是
28
28
28。首先比较最后一位,小 X 是
7
7
7,小 Y 是
8
8
8,此时小 Y 暂时领先。再加上前一位,小 X 是
37
37
37,小 Y 是
28
28
28,此时小 X 暂时领先。比较结束,如果我们用 X 代表小 X 暂时领先,Y 代表小 Y 暂时领先,那么可以写下一个字符串 XY 。
再比如,小 X 的点赞数是
137
137
137,小 Y 的点赞数是
47
47
47。如果我们再用 Z 表示小 X 与小 Y 的点赞数暂时一样,那么写下的字符串应该为 XYZ 。
你作为一个精通 OI 的神仙,自然知道这种比较方式是非常不科学的,这样只是在无端拖延时间罢了,但是你却对最后写下的这个字符串很感兴趣。
现在,你得到了这个最后写下的字符串,你需要构造出一种可能的小 X 与小 Y 的点赞数。
当然,有可能不存在任何一种情况的点赞数满足这个字符串,那么你只需要输出 -1 即可。
为了方便你输出,请用前导零来补足位数。
输入格式
一行一个字符串
s
s
s,表示最后写下的字符串。
输出格式
如果有解:
- 第一行一个整数,表示小 X 的点赞数。
- 第二行一个整数,表示小 Y 的点赞数。
如果无解:
样例 #1
样例输入 #1
XY
样例输出 #1
37
28
样例 #2
样例输入 #2
XYZ
样例输出 #2
137
047
样例 #3
样例输入 #3
ZZZZZZ
样例输出 #3
000000
000000
样例 #4
样例输入 #4
XYZXYZ
样例输出 #4
-1
#include <bits/stdc++.h>
using namespace std;
#define de(x) cout<<x<<" ";
#define Pu puts("");
#define sf(x) scanf("%d",&x);
typedef long long ll;
const int N=1e6+10,mod=100003;
const int inf=0x3f3f3f3f;
int a[N],b[N];
int n,m,ans;
char s[N];
int fun(){
for(int i=0;i<n;i++){
if(s[i]=='Z'){
int j=i;
while(j<n){
if(s[j]!='Z') return 0;
j++;
}
break;
}
}
return 1;
}
int main(){
scanf("%s",s);
n=strlen(s);
ans=fun();
if(ans==0){
printf("-1\n");
return 0;
}
for(int i=n-1;i>=0;i--){
if(s[i]=='Z'){
a[i]=b[i]=1;
}else if(s[i]=='X'){
a[i]=2;
b[i]=1;
}else{
a[i]=1;
b[i]=2;
}
}
for(int i=0;i<n;i++){
printf("%d",a[i]);
}Pu
for(int i=0;i<n;i++){
printf("%d",b[i]);
}
return 0;
}
|