diff --git a/problemtools/judge/grade.py b/problemtools/judge/grade.py index 6a62c6fb..6afe5ed8 100644 --- a/problemtools/judge/grade.py +++ b/problemtools/judge/grade.py @@ -10,7 +10,7 @@ from ..run import Program from .result import SubmissionResult, Verdict -_GRADER_OUTPUT_RE = re.compile(r'^((AC)|(WA)|(TLE)|(RTE)|(JE))\s+-?[0-9.]+\s*$') +_GRADER_OUTPUT_RE = re.compile(r'^((AC)|(WA)|(TLE)|(RTE)|(MLE)|(OLE)|(JE))\s+-?[0-9.]+\s*$') def grade_group( diff --git a/problemtools/judge/validate.py b/problemtools/judge/validate.py index 0bf104f6..054ba9c8 100644 --- a/problemtools/judge/validate.py +++ b/problemtools/judge/validate.py @@ -89,6 +89,10 @@ def _validate_output( val_timelim = metadata.limits.validation_time val_memlim = metadata.limits.validation_memory + output_size = os.path.getsize(submission_output) / 1024.0 / 1024.0 + if output_size > metadata.limits.output: + return SubmissionResult('OLE', reason=f'output ({output_size:.1f} Mb) exceeds output limit ({metadata.limits.output} Mb)') + if not output_validator.compile()[0]: return SubmissionResult('JE', reason=f'output validator {output_validator} failed to compile') val_stdout = execution_dir / 'val_stdout'