Studying Father's luogu blog

Studying Father's luogu blog

从零至灵,由壹达意

题解 P5595 【【XR-4】歌唱比赛】

posted on 2019-10-20 23:14:18 | under 题解 |

显然 Z 只能出现在字符串最后几位(因为是自低位到高位比较,因此一旦平局局面打破就不可能再出现平局)。

利用这一性质可以先判断出无解的情况。

合法解的构造方法就简单得多了:对于 X 领先的位,令小 X 在这一位上的数字比小 Y 大即可,反之同理。

#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;
}