题解 P5595 【【XR-4】歌唱比赛】
StudyingFather
2019-10-20 23:14:18
显然 Z 只能出现在字符串最后几位(因为是自低位到高位比较,因此一旦平局局面打破就不可能再出现平局)。
利用这一性质可以先判断出无解的情况。
合法解的构造方法就简单得多了:对于 X 领先的位,令小 X 在这一位上的数字比小 Y 大即可,反之同理。
```cpp
#include <cstdio>
#include <cstring>
char s[1000005],s1[1000005],s2[1000005];
int main()
{
scanf("%s",s);
int len=strlen(s);
bool flag=true;
for(int i=len-1;i>=0;i--)
{
if(s[i]!='Z')flag=false;
if(s[i]=='Z'&&!flag)
{
puts("-1");
return 0;
}
if(s[i]=='Z')s1[i]=s2[i]='0';
else if(s[i]=='X')s1[i]='9',s2[i]='0';
else s1[i]='0',s2[i]='9';
}
puts(s1);
puts(s2);
return 0;
}
```