UOJ的special judge写法
配置步骤
修改problem.conf
和传统题配置相比,spj的题区别就在于自定义了checker。
这里我们需要先把problem.conf中的use_builtin_checker
一行删去。
chk.cpp
在数据文件夹下新进一个文件命名为chk.cpp
。
UOJ的cheker使用testlib,下面是A+B
的checker:
#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中不能出现中文!
版权声明:本文为coder_wj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。