Special Judge:當正確的輸出結果不唯一的時候需要的自定義校驗器
首先有個框架
#include<fstream> ifstream fin,fout,fstd ofstream fscore,freport; double Judge(){ } int main(int argc,char *argv[]) { //put something to fstreams... //Judge&output report //close files return 0 }
然后fstream的接口對於lemon和cena不同
For Lemon:
所有的都從argv[]里面讀入
argv[1]:輸入文件
argv[2]:選手輸出文件
argv[3]:標准輸出文件
argv[4]:單個測試點分值
argv[5]:輸出最終得分的文件
argv[6]:輸出錯誤報告的文件
然后lemon的spj就大概這樣寫
int main(int argc,char *argv[]){ fin.open(argv[1]); fout.open(argv[2]); fstd.open(argv[3]); fscore.open(argv[5]); freport.open(argv[6]); int score=atoi(argv[4]); fscore<<score*Judge()<<endl; fin.close(); fout.close(); fstd.close(); fscore.close(); freport.close(); return 0; }
For Cena:
“score.log” 輸出最終得分
“report.log”輸出錯誤報告
#FILENAME”.in”輸入文件
#FILENAME”.out”選手輸出文件
argv[2]:標准輸出文件
argv[1]:單測試點分值
int main(int argc,char *argv[]){ fscore.open("score.log"); freport.open("report.log"); fstd.open(argv[2]); fin.open("set.in"); fout.open("set.out"); int score=atoi(argv[1]); fscore<<score*Judge()<<endl; fin.close(); fout.close(); fstd.close(); fscore.close(); freport.close(); return 0; }
*若描述和代碼有不同,以代碼為主qwq
*我就會這兩個了