#Lutece2420. 一行超人

一行超人

Migrated from Lutece 2420 一行超人

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

一行超人 ZXyang 无论写什么代码都只需要一行。

ZXyang 最近在学习一门新的语言—— H 语言(由 HeRaNO 设计)。

H 语言非常简单,它的语法规则与功能说明如下:


一、合法的 H 语言的代码应当只包含以下 4 种成分:

  1. 关键字

    关键字包括 newdeletereadwriteifwhile

  2. 变量名

    变量名是小写字母串,长度在 1~10 个字符之间,且不能与关键字相同。

  3. 字面值

    字面值是十进制数字串,表示的数值应在 [0,109)[0, 10^9) 之间,且不包含前导零。

  4. 符号

    符号仅包括 =+-*/%<<=>>===!=;(){}

关键字、变量名、字面值中任意二者之间需有一个或多个空格分隔,但符号与这三者之间的空格不是必须的。

二、合法的 H 语言的代码应当只包含以下 8 种语句:

  1. new x;

    新建一个整型变量,名为 xx,初始值为 00

  2. delete x;

    删除变量 xx

  3. read x;

    顺序读取输入序列的下一个数,并将其赋给 xx

  4. write x;

    xx 的值添加到输出序列末尾。

  5. x = y;

    yy 的值赋给 xx

  6. x = y ? z;? 代表 +-*/% 中的一个

    yyzz 的运算结果赋给 xx

  7. if (y ? z) {...}? 代表 <<=>>===!= 中的一个,... 代表若干(可以为零)条任意语句

    如果圆括号中的表达式为真,则执行花括号中的语句。

  8. while (y ? z) {...}? 代表 <<=>>===!= 中的一个,... 代表若干(可以为零)条任意语句

    如果圆括号中的表达式为真,则执行花括号中的语句,并重复该过程直至表达式为假。

上述所有 xx 都只能是变量名,不能是字面值,但 y,zy, z 可以是二者之一。运算符的含义与其在 C/C++ 语言中的相同。所有语句必须严格遵从上述格式,添加、删除或替换任一成分后皆不合法。

三、变量类型、运行错误与运行时间说明

  1. H 语言有且仅有一种变量类型:整型。它能储存 [0,109)[0, 10^9) 范围内的整数。如果运算结果超出了这个范围,则会对 10910^9 取模。
  2. 所有变量均具有全局作用域。新建一个已经存在的变量、访问或删除一个不存在的变量,会发生运行错误。
  3. 执行语句 3(read x;)时,如果输入序列无下一个数,则操作无效,不会报错但也不会给 xx 赋值。
  4. 执行语句 6(x = y ? z;)时,如果进行的是除法(/)或取模(%)运算,则除数或模数(即 zz)不能为零,否则会发生运行错误。
  5. 每条语句执行一次所需要的时间都是 11,语句 7、8 花括号中的语句需要单独计算。

学成归来的 ZXyang 想要练练手,于是他提出要用 H 语言帮 HeRaNO 测题。

遗憾的是 HeRaNO 正忙着给新人准备毒瘤题,还没来得及开发 H 语言的编译器。于是他把开发编译器的任务交给了你,并且想请你顺便判断一下 ZXyang 的程序是否能 AC。

你需要判断 ZXyang 的程序提交后会出现下列 5 种情况中的哪一种:


  1. 编译错误

    如果 ZXyang 的程序不符合 H 语言的语法规则,即为编译错误,请输出 Compile Error。注意,编译期间只检查代码是否符合语法规则,不检查可能引起运行错误的代码逻辑。

  2. 运行错误

    如果 ZXyang 的程序通过了编译,但出现了运行错误,请输出 Runtime Error。运行错误的具体说明见上文。

  3. 运行超时

    如果 ZXyang 的程序通过了编译且正确运行,运行时间达到了限制(即程序总运行时间等于限制时间,在 HeRaNO 的毒瘤题中这个限制时间是 10510^5),但仍有待执行的语句,则表示会出现运行超时。在这种情况下请输出 Time Limit Exceeded,然后将程序强制结束,不实际执行这些语句。如果无待执行的语句,则不判为运行超时。

  4. 答案错误

    如果 ZXyang 的程序通过了编译,正确运行且没有超时,但输出序列与标准输出序列不一致(即序列中数的个数或对应位置的数不同),则表示答案错误,请输出 Wrong Answer

  5. 正确通过

    如果以上情况都没有发生,则 ZXyang 的程序正确通过,请输出 Accepted


为什么没有 MLE 呢?因为 Lutece 还不支持。

Input

输入包含三行:

第一行是一行超人 ZXyang 用 H 语言写的程序,包含若干(可能为零)个 ASCⅡ 字符集的可打印字符;

第二行是 HeRaNO 的毒瘤题的标准输入序列,包含若干(可能为零)个整数,以空格分隔;

第三行是 HeRaNO 的毒瘤题的标准输出序列,包含若干(可能为零)个整数,以空格分隔。

上述若干个整数都在 [0,109)[0, 10^9) 范围内,且不包含前导零。输入总大小不超过 1 KB。

Output

输出一行表示你对 ZXyang 的程序的判断结果。

Samples

new yhcr; read yhcr; write yhcr;
233
233
Accepted
new yhcr; yhcr = 233; write yhcr;

233
Accepted
new yhcr; yhcr = 1000000007; write yhcr;

7
Compile Error
new yhcr; delete rchy;

0
Runtime Error
write 233;

233
Compile Error
x = x * (y + z);

0
Compile Error
new x; read x; if (x < 33) { x = 33; } write x;
22
33
Accepted
new x; read x; if (x < 33) x = 33; write x;
22
33
Compile Error
new x; read x; if (x < 33) { { ; } } write x;
22
22
Compile Error
new x; while (x < 49999) { x = x + 1; } write x;

49999
Time Limit Exceeded

Note

样例列举了一些 H 语言中的常见错误(需与其它计算机语言相区别):

  • 在样例 3 中,字面值 10000000071000000007 超出了规定的范围:[0,109)[0, 10^9)
  • 在样例 5 中,语句 4(write x;)的作用对象 xx 不能是一个字面值。
  • 在样例 6 中,表达式嵌套是非法的,因为不符合语句 6(x = y ? z;)的格式。
  • 在样例 8 中,省略大括号是非法的,因为不符合语句 7(if (y ? z) {...})的格式。
  • 在样例 9 中,添加大括号和使用空语句(;)都是非法的,因为不符合语句 7(if (y ? z) {...})的格式。
  • 在样例 10 中,语句 write x; 将不会被执行,因为它之前的语句的运行总时间刚好达到了限制。

本题细节较多,请仔细读题。保证测试数据前 10 组与样例对应。

Resources

2020 UESTC ICPC Training for String and Search Algorithm