修改LDUOJ的SPJ问题
原创
©著作权归作者所有:来自51CTO博客作者为最后的荣光的原创作品,请联系作者获取转载授权,否则将追究法律责任
首先我们遇见注释,也就是文章说明, 怪长的删了吧哈哈哈
然后看到
const int EXITCODE_AC = 42;
const int EXITCODE_WA = 43;
改成这丫子,好像是因为, 42代表字符’0’,阿斯卡码什么的。
const int EXITCODE_AC = 0;
const int EXITCODE_WA = 1;
跟上面一样,将ac改成0,wa改成1
看到这个东东:
std::ifstream judge_in, judge_ans;
std::istream author_out(std::cin.rdbuf());
改成这样丫子:
std::ifstream judge_in, judge_ans;
std::ifstream author_out;
然后接着看:
将这两个函数中的
void wrong_answer(const std::string &msg, ...) {
va_list pvar;
va_start(pvar, msg);
vreport_feedback(FILENAME_JUDGE_MESSAGE, msg, pvar);
exit(EXITCODE_WA);
}
void judge_error(const std::string &msg, ...) {
va_list pvar;
va_start(pvar, msg);
vreport_feedback(FILENAME_JUDGE_ERROR, msg, pvar);
assert(0);
}
注释掉。
va_list pvar;
va_start(pvar, msg);
vreport_feedback(FILENAME_JUDGE_ERROR, msg, pvar);
接着看:
void accept_with_score(double scorevalue) {
report_feedback(FILENAME_SCORE, "%.9le", scorevalue);
exit(EXITCODE_AC);
}
注释掉第一行:
void accept_with_score(double scorevalue) {
///report_feedback(FILENAME_SCORE, "%.9le", scorevalue);
exit(EXITCODE_AC);
}
然后看到init_io函数:
把前面这些:
if(argc < 4) {
fprintf(stderr, USAGE, argv[0]);
judge_error("Usage: %s judgein judgeans feedbackdir [opts] < userout", argv[0]);
}
// Set up feedbackdir first, as that allows us to produce feedback
// files for errors in the other parameters.
if (!is_directory(argv[3])) {
judge_error("%s: %s is not a directory\n", argv[0], argv[3]);
}
feedbackdir = argv[3];
删掉之后,改成这丫子、
void init_io(int argc, char **argv) {
judge_in.open(argv[1], std::ios_base::in);
if (judge_in.fail()) {
judge_error("%s: failed to open %s\n", argv[0], argv[1]);
}
judge_ans.open(argv[2], std::ios_base::in);
if (judge_ans.fail()) {
judge_error("%s: failed to open %s\n", argv[0], argv[2]);
}
author_out.open(argv[3], std::ios_base::in);
if (author_out.fail()) {
judge_error("%s: failed to open %s\n", argv[0], argv[3]);
}
}
over