評測結果說明


This page lists all status codes encountered on the DMOJ and their description. It should be noted that it is possible for a test case to be given multiple status codes (indeed, this is usually the case for non-AC verdicts), in which case the one with the highest priority will be displayed. This page lists status codes in order of increasing priority.

AC - Accepted

Your program passed testing! In some cases, this may be accompanied with additional feedback from the grader.

WA - Wrong Answer

Your program did not crash while executing, but the output it produced was wrong. As for AC, this may be accompanied with additional feedback stating what you did wrong.

IR - Invalid Return

Your program returned with a nonzero exit code (if you are not using a native language like C++, it crashed). For languages like Python or Java, this will typically be accompanied with the name of the exception your program threw, e.g., NameError or java.lang.NullPointerException, respectively.

RTE - Runtime Error

Your program caused a runtime error to occur. This will only occur for native languages like C or C++. DMOJ maps many common RTEs to more useful descriptions, described below.

Feedback Description
segmentation fault, bus error Your program was killed by SIGSEGV or SIGBUS. Generally, this means you ran out of memory, but it can also mean that you are accessing arrays out of bounds, in some cases.
floating point exception Your program performed a bad arithmetic operation, such as division by zero.
killed Your program was killed by the runtime for some reason (we do not know).
{} syscall disallowed Unless you are doing something of a dubious nature, you should never see this message. If you do, please submit an issue so we can get it sorted out. It is raised when your program attempts to use a disallowed system call.
std::bad_alloc new failed to allocate enough memory.
failed initializing Your program uses too much data defined in global scope for it to fit inside the memory constraints at startup. A typical example is code like int arr[10000][10000] on a problem with a 64mb memory limit — the aforementioned array will take 381mb, far above the allowed limit.

OLE - Output Limit Exceeded

Your program outputted too much data to stdout, typically over 256mb (though some problems may have custom — generally larger — constraints).

MLE - Memory Limit Exceeded

Your program ran out of memory. Sometimes, this might manifest itself as an RTE with segmentation fault or std::bad_alloc.

TLE - Time Limit Exceeded

Your program took too long to execute.

IE - Internal Error

If you see this, it means either the judge encountered an error or the problemsetter configuration is incorrect.

本頁列出 AACPOJ 上所有可能出現的評測狀態碼及其說明。一筆測試資料可能同時觸發多種狀態碼,系統會顯示優先順序最高的那一個。以下依優先順序由低到高排列。

AC - Accepted(通過)

你的程式通過了所有測試!在某些情況下,評測器可能會附帶額外的回饋訊息。

WA - Wrong Answer(答案錯誤)

你的程式在執行過程中沒有發生錯誤,但輸出的結果不正確。與 AC 一樣,系統可能會附帶說明你哪裡做錯了。

IR - Invalid Return(非正常結束)

你的程式以非零的結束代碼(exit code)結束。如果你使用的不是 C++ 這類原生語言,這通常代表程式發生了例外(exception)。對於 Python 或 Java,系統會顯示例外的名稱,例如 NameErrorjava.lang.NullPointerException

RTE - Runtime Error(執行期錯誤)

你的程式在執行過程中發生了執行期錯誤。此狀態碼僅適用於 C/C++ 等原生語言。AACPOJ 會將常見的執行期錯誤對應到更具體的描述,如下表所示:

回饋訊息 說明
segmentation faultbus error 程式收到 SIGSEGVSIGBUS 訊號而被終止。通常代表記憶體不足,但也可能是陣列存取越界(out of bounds)。
floating point exception 程式執行了不合法的算術運算,例如除以零。
killed 程式因某種原因被系統強制終止(原因不明)。
{} syscall disallowed 除非你做了什麼不尋常的操作,否則不應該看到此訊息。若出現請回報問題。此訊息表示你的程式嘗試使用了被禁止的系統呼叫(system call)。
std::bad_alloc new 無法配置足夠的記憶體。
failed initializing 你的程式在全域範圍(global scope)宣告了過多資料,導致啟動時就超出了記憶體限制。典型的例子是在記憶體限制為 64MB 的題目中宣告 int arr[10000][10000]——這個陣列就需要 381MB,遠超允許的限制。

OLE - Output Limit Exceeded(輸出超過限制)

你的程式輸出到 stdout 的資料量過大,通常上限為 256MB(某些題目可能有不同的限制)。

MLE - Memory Limit Exceeded(記憶體超過限制)

你的程式使用的記憶體超過了限制。有時候這會以 RTE 的形式出現,顯示 segmentation faultstd::bad_alloc

TLE - Time Limit Exceeded(超過時間限制)

你的程式執行時間過長。

IE - Internal Error(內部錯誤)

如果你看到這個狀態碼,代表評測系統本身發生了錯誤,或是出題者的設定有誤。