本文将引导您写一个自定义的checker(chk.cpp
)。
按照套路,uoj的校验器也应该使用testlib编写。
如果您准备使用自定义校验器,请在
problem.conf
中去掉use_builtin_checker
那一行。
下面是A+B Problem
的校验器:
#include "testlib.h" int main(int argc, char* argv[]) { registerTestlibCmd(argc, argv); int pans,jans; pans=ouf.readInt(); // 读取选手输出 jans=ans.readInt(); // 读取答案 if (pans == jans) quitf(_ok, "Correct."); else quitf(_wa, "WA! expect=%d recieve=%d", jans, pans); }
在调用registerTestlibCmd
之后,我们可以使用下面的三个流:
inf
: 输入数据ouf
: 选手输出ans
: 标准输出
从流中读取数据的方式,和【数据检验器】一致。
如果程序AC或者爆零,您可以使用quitf()
。但是如果您想给选手部分分,请使用下面的代码:
quitp(ceil(100.0 * p / a) / 100, "QAQ");
这将会给选手p分。
chk.cpp中不能出现中文!