首先感谢神犇r_64教会我写spj
这里提供一个C++的模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <cstdio> const int MAXN=100001; int n; double ans[MAXN]; int main(int ac,char *av[]){ int a,b,res; freopen(av[5],"w",stdout);//输出分数 freopen(av[1],"r",stdin);//输入文件 scanf("%d",&n); freopen(av[3],"r",stdin);//标准输出 for(int i=1;i<=n;i++)scanf("%lf",&ans[i]); freopen(av[2],"r",stdin);//选手输出 for(int i=1;i<=n;i++){ double l=ans[i]*0.95,r=ans[i]*1.05,my; scanf("%lf",&my); if(my<l||my>r){ printf("0"); freopen(av[6],"w",stdout);//输出信息 printf("WA on line %d",i); return 0; } } freopen(av[4],"r",stdin);//满分分数 scanf("%d",&n); printf("%d",n); return 0; } |
该程序的main函数接收一些参数:从av[1]到av[6]分别为输入文件,选手输出,标准输出,满分分数文件、输出分数文件,输出信息文件。
在lemon下输出的分数为选手最终在该测试点得到的分数;在tsinsen下输出一个小数,为得分占该点满分的比例。
然后打开lemon,选择自定义校验器模式然后再输入你的spj位置就可以啦!
好东西好东西!