#MN0002. Chọn engine từ log kiểm thử (Engine Log Selection)
Chọn engine từ log kiểm thử (Engine Log Selection)
Chọn engine từ log kiểm thử
Phiên bản: Phước Hưng OJ Extended
Đề bài
Một hệ thống kiểm thử đang đánh giá engine. Các engine được đánh số từ đến theo đúng thứ tự xuất hiện trong dữ liệu vào.
Với engine thứ , hệ thống ghi nhận ba thông số:
- : số node mà engine đã xét trong quá trình tìm kiếm;
- : số thế chiến thuật mà engine giải đúng;
- : độ sâu tìm kiếm mà engine đã hoàn tất.
Cần chọn ra engine tốt nhất theo thứ tự ưu tiên sau:
- Engine có số thế giải đúng lớn hơn được ưu tiên.
- Nếu hai engine có cùng số thế giải đúng, engine có độ sâu lớn hơn được ưu tiên.
- Nếu cả và đều bằng nhau, engine có số node đã xét nhỏ hơn được ưu tiên.
- Nếu cả ba thông số trên đều bằng nhau, engine có số thứ tự nhỏ hơn được ưu tiên.
Nói cách khác, việc so sánh luôn được thực hiện lần lượt theo thứ tự:
$$correct\ \text{giảm dần} \rightarrow depth\ \text{giảm dần} \rightarrow nodes\ \text{tăng dần} \rightarrow \text{số thứ tự engine tăng dần}.$$Hãy xác định engine tốt nhất trong toàn bộ log kiểm thử.
Input
Dòng đầu tiên chứa số nguyên — số lượng engine.
Trong dòng tiếp theo, dòng thứ chứa ba số nguyên:
nodes_i correct_i depth_i
mô tả kết quả kiểm thử của engine thứ , trong đó:
- là số node engine thứ đã xét;
- là số thế chiến thuật engine thứ giải đúng;
- là độ sâu tìm kiếm engine thứ đã hoàn tất.
Số thứ tự của engine không xuất hiện riêng trong Input. Engine ở dòng dữ liệu đầu tiên được đánh số , engine ở dòng dữ liệu thứ hai được đánh số , và tương tự cho đến engine thứ .
Output
In ra bốn số nguyên:
id correct depth nodes
trong đó:
- là số thứ tự của engine tốt nhất;
- là số thế chiến thuật mà engine đó giải đúng;
- là độ sâu tìm kiếm mà engine đó đã hoàn tất;
- là số node mà engine đó đã xét.
Subtask
- Subtask 1 — 15%: ; ; các giá trị đôi một khác nhau.
- Subtask 2 — 20%: ; ; nếu hai engine có cùng thì chúng luôn có khác nhau.
- Subtask 3 — 25%: ; ; nếu hai engine có cùng và thì chúng luôn có khác nhau.
- Subtask 4 — 40%: ; ; không có điều kiện bổ sung.
Ví dụ
Ví dụ 1
Input
3
900000 18 10
500000 19 9
2000000 19 11
Output
3 19 11 2000000
Giải thích
Có ba engine:
- engine : , , ;
- engine : , , ;
- engine : , , .
Engine chỉ giải đúng thế, trong khi engine và engine đều giải đúng thế, nên engine không được chọn.
Engine và engine có cùng:
Do đó xét tiếp độ sâu.
Ta có:
Vì , engine được ưu tiên.
Số node chỉ được xét khi cả correct và depth đều bằng nhau, vì vậy việc engine xét nhiều node hơn engine không làm thay đổi kết quả.
Engine tốt nhất là engine số .
Ví dụ 2
Input
4
1000000 25 12
800000 25 12
600000 24 15
900000 25 11
Output
2 25 12 800000
Giải thích
Engine , engine và engine cùng giải đúng thế, nhiều hơn engine với thế.
Trong ba engine còn lại:
- engine có ;
- engine có ;
- engine có .
Do đó engine bị loại vì có độ sâu nhỏ hơn.
Engine và engine cùng có:
Ta tiếp tục so sánh số node:
Vì , engine được ưu tiên.
Ví dụ 3
Input
4
500000 30 14
500000 30 14
700000 30 14
100000 29 20
Output
1 30 14 500000
Giải thích
Ba engine đầu tiên đều có:
nên đều được ưu tiên hơn engine , mặc dù engine đạt độ sâu lớn hơn.
Engine , engine và engine tiếp tục có cùng:
Xét số node:
$$nodes_1=500000,\qquad nodes_2=500000,\qquad nodes_3=700000.$$Engine kém ưu tiên hơn vì đã xét nhiều node hơn.
Engine và engine vẫn hoàn toàn bằng nhau ở cả ba thông số:
Khi đó sử dụng tiêu chí cuối cùng: engine có số thứ tự nhỏ hơn được ưu tiên.
Vì:
engine được chọn.
Ví dụ 4
Input
1
123456789012345678 1000000000000000000 999999999999999999
Output
1 1000000000000000000 999999999999999999 123456789012345678
Giải thích
Chỉ có một engine nên engine số chắc chắn là engine tốt nhất.
Ví dụ này cũng cho thấy các thông số có thể rất lớn và có thể đạt tới cỡ .