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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/coder_wj/article/details/82758924