public override void Judge() { JudgeResult result = JudgeResult; string[] dataNames = TestDataManager.GetDbTestDataNames(JudgeTask.ProblemId, _dbType); if (dataNames.Length == 0) { result.ResultCode = JudgeResultCode.JudgeFailed; result.JudgeDetail = "No test data."; return; } int acceptedCount = 0; foreach (string dataName in dataNames) { SingleJudgeResult singleResult = JudgeOneCase(dataName); result.TimeCost = Math.Max(result.TimeCost, singleResult.TimeCost); if (singleResult.ResultCode == JudgeResultCode.Accepted) { acceptedCount++; } else { result.ResultCode = singleResult.ResultCode; result.JudgeDetail = singleResult.JudgeDetail; if (!JudgeTask.JudgeAllCases) { break; } } } result.PassRate = (double)acceptedCount / dataNames.Length; }