1 ac=0 2 tle=0 3 wa=0 4 fullmark=100 5 timelimit=1000 6 timeout=`expr $timelimit / 500` 7 toolong=`expr $timelimit + $timelimit` 8 9 g++ datamaker.cpp -o datamaker -g -Wall -std=c++11 -o2 10 g++ std.cpp -o std -g -Wall -std=c++11 -o2 11 g++ me.cpp -o me -g -Wall -std=c++11 -o2 12 13 for i in $(seq 1 ${fullmark});do 14 ./datamaker > data.in 15 ./std < data.in > data.ac 16 17 declare st=`expr \`date +%s%N\` / 1000000`; 18 timeout ${timeout} ./me < data.in > data.me 19 declare ed=`expr \`date +%s%N\` / 1000000`; 20 timeuse=$((ed-st)) 21 22 if [ ${timeuse} -gt ${timelimit} ]; then 23 echo "Time Limit Error on test ${i}." 24 if [[ ${timeuse} -gt ${toolong} ]]; then 25 echo "Time used more than ${toolong}ms." 26 else 27 echo "Time used: ${timeuse}ms." 28 fi 29 let tle=$tle+1 30 elif diff data.ac data.me; then 31 echo "Accepted on test ${i}." 32 echo "Time used: ${timeuse}ms." 33 let ac=$ac+1 34 else 35 echo "Wrong Answer on test ${i}." 36 let wa=$wa+1 37 fi 38 done 39 40 echo " " 41 echo Judge finished. Your score is ${ac}. 42 if [ ${ac} -eq ${fullmark} ]; then 43 echo "Judge passed. Congratulations!" 44 else 45 echo "Judge doesn't passed." 46 if [ ${ac} -gt 0 ]; then 47 echo "${ac} tests accepted." 48 fi 49 if [ ${wa} -gt 0 ]; then 50 echo "${wa} tests wrong answer." 51 fi 52 if [ ${tle} -gt 0 ]; then 53 echo "${tle} tests time limit error." 54 fi 55 fi
19.8.6: Version 1.6 Released.
1.增加了对死循环的判定,时长超过时限2倍直接停止程序
2.增加了末尾的评测结果
3.增加了编译源代码,不用你编译了。后缀名应为.cpp.