diff --git a/libs/judger.js b/libs/judger.js index cb52392..80fd6f3 100644 --- a/libs/judger.js +++ b/libs/judger.js @@ -5,6 +5,7 @@ const msgPack = require('msgpack-lite'); const fs = require('fs-extra'); const interface = require('./judger_interfaces'); const judgeResult = require('./judgeResult'); +let Problem = syzoj.model('problem'); const judgeStateCache = new Map(); const progressPusher = require('../modules/socketio'); @@ -158,7 +159,6 @@ async function connect() { } const result = msgPack.decode(payload); - console.log(result); winston.verbose('Received report for task ' + result.taskId); const judge_state = await JudgeState.findOne({ @@ -171,9 +171,36 @@ async function connect() { const convertedResult = judgeResult.convertResult(result.taskId, result.progress); winston.verbose('Reporting report finished: ' + result.taskId); progressPusher.cleanupProgress(result.taskId); - console.log(convertedResult); if (!judge_state) return; - judge_state.score = convertedResult.score; + const problemId = judge_state.problem_id; + let problemQuery = await Problem.createQueryBuilder(); + const problemInfo = await problemQuery.where("id = :id", { id: problemId }).getOne(); + const problem_time_limit = problemInfo.time_limit; + const subtasksArray = convertedResult.result.judge.subtasks; + const timeArray = subtasksArray.map((subtasksItem) => { + return subtasksItem.cases.map((subtasksItemCases) => { + return subtasksItemCases.result.time + }) + }); + function flat(array, result=[]){ + for (let i=0;i