小C同学对我们所使用的OJ系统十分感兴趣,他很好奇OJ系统是如何判题的,由于不太会编程,所以小C只好找到了聪明的你,请你帮他实现一个简易的判题程序。
请你实现一个简易的OJ评测程序,给出每道题目测试点的标准答案和用户所提交程序的输出结果,你需要评判以下三种情况:(为简化要求,规定每个测试点的标准答案和用户的输出均为一些整数,即不出现字母、字符等)
Accepted:用户输出与标准答案完全一致(行数相同,每行对应相等)
Presentation Error:输出的结果完全正确(数字的值和个数),但分隔符(即换行'\n'
,空格' '
,回车'\r'
和制表符'\t'
)的种类,数量或者顺序不一致。注意:在本题中,行尾出现多余的空格也算作错误,除非标准答案行尾也有相同数量的空格。
Wrong Answer:一切不符合前两种类型的情况,即用户输出的数字个数或数值与标准答案不同。
给出每个测试点的标准输出和用户的输出,请你比对二者并给出评测结果。
注:本题中对PE的规定与实际的accoding OJ判题机制不一定完全相同
输入数据的第一行为两个整数$m$和$n$,中间以一个空格隔开,分别为标准答案和用户输出的行数。
而后为$m+n$行,前$m$行是标准答案,后$n$行是用户提交的程序输出。每行包括数字0-9
,空格' '
,制表符'\t'
等。
每行的末尾都一定有'\n'
,包括测试数据的最后一行!
一共一行一个字符串,为评测反馈结果。
样例1
3 3
2
1 2 3
2 3 4
2
1 2 3
2 3 4
样例2
1 1
1 2 3 4 5
1 2 3 4 5
样例3
1 1
100
100
样例4
2 1
3
2
3 2
样例5
1 1
1 26
12 5
样例1
Accepted
样例2
Presentation Error
样例3
Presentation Error
样例4
Presentation Error
样例5
Wrong Answer
样例说明:第2组样例的用户输出(样例最后一行)比标准答案(样例第二行)末尾多一个空格,因此判为PE。
标准输出和用户输出均不超过100行,每行不超过1000个字符(末尾的换行符未在此处计入)。每个整数不一定在int
或long long
范围内。(不要试图用int
或long long
数组存下输出中的每个整数)
所有的标准答案和用户输出只包括数字(0-9
)和分隔符(空格' '
,换行符'\n'
,回车符'\r'
和制表符'\t'
)
gets
或者fgets
函数读取整行的字符串。(两者可以都试试,体会一下区别)while (getchar() != '\n');
或者gets(laji);
清除残留的换行符。'\r'
。'\r'
, '\n'
还有字符串末尾的'\0'
的位置留了吗?)在本题中PE的本质就是每个数之间间隔的分隔符不同,可以考虑将两个数之间无论多少个分隔符都当做一个空格处理(存入新的字符串中),如果标准答案和用户输出完全一致且没有AC即可判定为PE。(思考:将分隔符全滤掉直接拼接数字行不行?)
AUTHOR: 董翰元