Thắc mắc thường gặp
Dưới đây là các mã trạng thái bài làm trên HNOJ và giải thích của chúng. Lưu ý rằng một test case có thể gặp nhiều mã trạng thái khác nhau (dĩ nhiên, trong trường hợp bài nộp chưa chính xác hoàn toàn), khi đó trạng thái ưu tiên cao nhất (từ trên xuống dưới) sẽ được hiện. Chúc mừng! Bài làm của bạn đã được cho là đúng. Lưu ý, trong một số trường hợp có thể kèm theo nhận xét phụ. Chương trình của bạn chạy thành công, tuy nhiên cho ra đáp án chưa chính xác. Lưu ý, trong một số trường hợp có thể kèm theo nhận xét phụ chỉ rõ lý do bài nộp bị sai. Chương trình của bạn trả về giá trị khác 0 (non-zero exit code). Nếu bạn khống sử dụng các ngôn ngữ native như C++ thì chương trình sẽ bị ngưng hoạt động. Với các ngôn ngữ khác như Python hay Java thì đi cùng thường sẽ là các lỗi tương ứng mà chương trình đưa ra (NameError hoặc java.lang.NullPointerException) Chương trình của bạn cho ra một lỗi thực thi. Lỗi này thường chỉ xảy ra khi bạn sử dụng các ngôn ngữ native như C hay C++. HNOJ có liệt kê các lỗi thực thi thường gặp như dưới: Chương trình của bạn in quá nhiều ra Chương trình của bạn sử dụng quá nhiều bộ nhớ. Đôi khi, chương trình của bạn có thể đưa ra biểu hiện RTE như Chương trình của bạn sử dụng quá nhiều thời gian để chạy. Nếu bạn thấy lỗi này, thì do máy chấm của HNOJ đang gặp vấn đề, hoặc cấu hình của bài đang bị sai. Quản trị viên sẽ được thông báo qua email khi lỗi này xảy ra, vì vậy bạn không cần làm gì cả và có thể thử lại sau.1. Tôi không hiểu về nhận xét bài nộp của tôi (AC, WA, RTE...)
1. AC (Accepted) - Kết quả đúng
2. WA (Wrong Answer) - Đáp án sai
3. IR (Invalid Return) - Trả về không hợp lệ
4. RTE (Runtime Error) - Lỗi thực thi
Nhận xét
Giải thích
segmentation fault
, bus error
Chương trình bị buộc dừng lại do SIGSEGV
hoặc SIGBUS
. Thông thường, điều này là do bạn sử dụng quá bộ nhớ cho phép, hoặc truy cập vào vị trí mảng nằm ngoài giới hạn.
floating point exception
Chương trình của bạn xử lý phép tính không hợp lệ, ví dụ như chia cho 0.
killed
Chương trình của bạn bị buộc dừng lại bởi trình thực thi, vì một lý do nào đó (mà HNOJ không thể nhận ra).
opening files is not allowed
Trừ khi bài yêu cầu nhập/xuất file, bạn tuyệt đối không nên nhập/xuất file vì làm vậy dẫn đến lỗi này.
{} syscall disallowed
Trừ khi bạn làm gì đó bất thường, bạn chắc chắn không thể nhìn thấy lỗi này. Nếu lỗi này xảy ra liên tục, hãy liên hệ quản trị viên của HNOJ để giải quyết.
std::bad_alloc
Hàm new
của C++ không thể cấp phát đủ bộ nhớ trong khi chạy. Lỗi thường xảy ra khi khởi tạo quá giới hạn cho phép.
failed initializing
Chương trình của bạn sử dụng quá nhiều dữ liệu cho biến cục bộ, dẫn đến việc sử dụng bộ nhớ quá giới hạn cho phep. Một ví dụ điển hình là như sau:
int arr[10000][10000];
5. OLE (Output Limit Exceeded) - Quá giới hạn xuất
stdout
. Thông thường giới hạn này là 256MB trừ khi được đặt cụ thể theo từng bài.6. MLE (Memory Limit Exceeded) - Quá giới hạn bộ nhớ
segmentation fault
hoặc std::bad_alloc
7. TLE (Time Limit Exceeded) - Quá giới hạn thời gian
8. IE (Internal Error) - Lỗi cục bộ
HNOJ sử dụng hệ thống tính điểm theo trọng lượng - Bài khó hơn sẽ được thưởng nhiều điểm hơn. Hệ thống này được đưa vào nhằm tăng tính công bằng và khuyến khích các bạn thử sức bài khó hơn. Các bạn có thể xem công thức tính điểm chi tiết tại đây. Lưu ý rằng các bài trên HNOJ chưa được phân loại rõ ràng, vì vậy độ khó và điểm của các bài có thể sẽ không đồng nhất với nhau.2. Tổng điểm của tôi không khớp so với các bài đã làm