Ejemplo n.º 1
0
        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;
        }