| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2020 - Building 4 | 100 (p) | 1.5s | 512M |
| 2 | JOI 2020 - Hamburg Steak | 100 (p) | 3.0s | 1G |
| 3 | JOI 2020 - Sweeping | 100 (p) | 11.0s | 2G |
Thế vận hội sắp được tổ chức tại vương quốc JOI. Để chào đón các vận động viên từ khắp nơi trên thế giới, những tòa nhà dọc đường từ sân bay đến nơi lưu trú sẽ được trang trí. Có \(2N\) tòa nhà, được đánh số từ \(1\) đến \(2N\) theo thứ tự từ phía sân bay.
Tổng thống K phụ trách dự án trang trí. Ông kêu gọi người dân đề xuất các phương án và cuối cùng chọn ra hai phương án \(A\) và \(B\). Theo phương án \(A\), mức độ lộng lẫy của tòa nhà thứ \(i\) (\(1 \le i \le 2N\)) là \(A_i\); theo phương án \(B\), mức độ lộng lẫy của tòa nhà đó là \(B_i\).
Cả hai phương án đều rất tốt nên ông khó lựa chọn. Ông quyết định chọn một trong hai phương án cho từng tòa nhà. Để bảo đảm công bằng, đúng \(N\) tòa nhà phải dùng phương án \(A\) và \(N\) tòa nhà còn lại phải dùng phương án \(B\). Ngoài ra, để các vận động viên càng thêm hào hứng trên đường đến nơi lưu trú, mức độ lộng lẫy phải không giảm: gọi \(C_i\) là mức độ lộng lẫy của tòa nhà thứ \(i\), cần có \(C_i \le C_{i+1}\) với mọi \(1 \le i \le 2N-1\).
Hãy viết chương trình nhận số tòa nhà và mức độ lộng lẫy của từng tòa nhà trong mỗi phương án, xác định có thể chọn các phương án thỏa mãn yêu cầu hay không, và in ra một cách chọn nếu có.
Dữ liệu được cho từ đầu vào chuẩn theo định dạng sau. Tất cả các giá trị đều là số nguyên.
N
A_1 A_2 ... A_{2N}
B_1 B_2 ... B_{2N}
Nếu không có cách chọn thỏa mãn yêu cầu, in ra -1.
Ngược lại, in ra xâu \(S\) có độ dài \(2N\) mô tả cách chọn. Ký tự thứ \(i\) (\(1 \le i \le 2N\)) của \(S\) là A nếu tòa nhà thứ \(i\) dùng phương án \(A\), và là B nếu dùng phương án \(B\). Nếu có nhiều cách chọn hợp lệ, có thể in ra một cách bất kỳ.
Các ràng buộc chung ở trên áp dụng cho mọi nhóm. Các ràng buộc bổ sung và số điểm của từng nhóm như sau:
Ví dụ 1
3
2 5 4 9 15 11
6 7 6 8 12 14
AABABB
Chọn lần lượt các phương án \(A,A,B,A,B,B\) cho sáu tòa nhà. Mỗi phương án \(A\) và \(B\) được chọn đúng ba lần. Mức độ lộng lẫy của các tòa nhà lần lượt là \(2,5,6,9,12,14\), thỏa mãn yêu cầu.
Ví dụ 2
2
1 4 10 20
3 5 8 13
BBAA
Nếu có nhiều cách trang trí thỏa mãn yêu cầu, có thể in ra một cách bất kỳ.
Ví dụ 3
2
3 4 5 6
10 9 8 7
-1
Không thể chọn các phương án trang trí thỏa mãn yêu cầu, nên in ra -1.
Ví dụ 4
6
25 18 40 37 29 95 41 53 39 69 61 90
14 18 22 28 18 30 32 32 63 58 71 78
BABBABAABABA
Bản dịch tiếng Việt từ đề chính thức bằng tiếng Anh của Ủy ban Olympic Tin học Nhật Bản, kỳ trại huấn luyện mùa xuân JOI 2019/2020, ngày thi thứ nhất (20/03/2020). Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Bạn đã nghe đến công ty Just Odd Inventions, Ltd. chưa? Công ty này nổi tiếng với những phát minh kỳ lạ. Trong bài toán này, ta gọi công ty là JOI.
Công ty JOI đang tổ chức tiệc năm mới. Các nhân viên nướng \(N\) miếng thịt băm trên một vỉ nướng khổng lồ. Coi vỉ nướng là một bảng ô vuông kích thước \(10^9 \times 10^9\). Ký hiệu \((x,y)\) là ô ở cột thứ \(x\) từ trái sang và hàng thứ \(y\) từ dưới lên, với \(1 \le x,y \le 10^9\).
Các miếng thịt được đánh số từ \(1\) đến \(N\). Miếng thứ \(i\) (\(1 \le i \le N\)) nằm trên vùng hình chữ nhật có góc dưới bên trái là \((L_i,D_i)\) và góc trên bên phải là \((R_i,U_i)\). Các miếng thịt có thể chồng lên nhau.
Bạn là nhân viên mới của công ty JOI. Nhiệm vụ của bạn là chọn \(K\) ô trên vỉ và cắm các que tre vào tâm những ô đó, vuông góc với mặt vỉ. Để kiểm tra độ chín của một miếng thịt, phải có ít nhất một que được cắm vào một ô thuộc miếng thịt đó. Bạn cần kiểm tra tất cả các miếng thịt. Có thể cắm nhiều que vào cùng một ô, và cũng có thể cắm que vào một ô không có miếng thịt nào.
Cụ thể, hãy tìm \(K\) cặp số nguyên \((x_1,y_1),\ldots,(x_K,y_K)\), không nhất thiết đôi một khác nhau, thỏa mãn:
Hãy viết chương trình nhận vị trí các miếng thịt và số que tre, rồi tìm một cách cắm que thỏa mãn yêu cầu. Dữ liệu bảo đảm luôn tồn tại một cách chọn \(K\) ô như vậy.
Dữ liệu được cho từ đầu vào chuẩn theo định dạng sau. Tất cả các giá trị đều là số nguyên.
N K
L_1 D_1 R_1 U_1
L_2 D_2 R_2 U_2
...
L_N D_N R_N U_N
In ra \(K\) dòng. Dòng thứ \(j\) (\(1 \le j \le K\)) chứa hai số \(x_j\) và \(y_j\), cách nhau bởi một dấu cách.
Nếu có nhiều cách cắm que thỏa mãn yêu cầu, có thể in ra một cách bất kỳ.
Các ràng buộc chung ở trên áp dụng cho mọi nhóm. Các ràng buộc bổ sung và số điểm của từng nhóm như sau:
Ví dụ 1
4 2
2 1 3 3
1 2 4 3
6 1 7 4
5 3 7 5
2 2
7 4
Cắm một que vào ô \((2,2)\) để kiểm tra độ chín của các miếng thịt \(1\) và \(2\), và một que vào ô \((7,4)\) để kiểm tra các miếng thịt \(3\) và \(4\).
Ngoài cách chọn hai ô \((2,2)\) và \((7,4)\), chẳng hạn cũng có thể cắm que vào hai ô \((3,3)\) và \((6,4)\).
Ví dụ 2
3 3
1 1 1 1
1 2 1 2
1 3 1 3
1 1
1 2
1 3
Bản dịch tiếng Việt từ đề chính thức bằng tiếng Anh của Ủy ban Olympic Tin học Nhật Bản, kỳ trại huấn luyện mùa xuân JOI 2019/2020, ngày thi thứ nhất (20/03/2020). Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Căn phòng của Bitaro có hình tam giác vuông cân với độ dài mỗi cạnh góc vuông bằng \(N\). Một điểm trong phòng được biểu diễn bằng tọa độ \((x,y)\), thỏa mãn \(0 \le x \le N\), \(0 \le y \le N\) và \(x+y \le N\). Đỉnh góc vuông là gốc tọa độ; hai cạnh góc vuông nằm trên trục \(x\) và trục \(y\).
Một ngày nọ, Bitaro nhận thấy căn phòng đầy bụi. Ban đầu có \(M\) hạt bụi trong phòng. Hạt bụi thứ \(i\) (\(1 \le i \le M\)) nằm tại \((X_i,Y_i)\). Nhiều hạt bụi có thể nằm tại cùng một điểm.
Bitaro định dùng chổi để quét phòng. Ta coi chổi là một đoạn thẳng nằm trong phòng và gọi độ dài đoạn thẳng đó là bề rộng của chổi. Bitaro chỉ dùng chổi theo hai cách sau:
Có \(Q\) sự kiện lần lượt xảy ra trong phòng. Sự kiện thứ \(j\) (\(1 \le j \le Q\)) thuộc một trong bốn loại:
Hãy viết chương trình nhận độ dài cạnh góc vuông của căn phòng, tọa độ ban đầu của các hạt bụi và thông tin về các sự kiện, rồi xác định tọa độ các hạt bụi được hỏi.
Dữ liệu được cho từ đầu vào chuẩn theo định dạng sau. Tất cả các giá trị đều là số nguyên.
N M Q
X_1 Y_1
...
X_M Y_M
(Sự kiện 1)
...
(Sự kiện Q)
Mỗi dòng (Sự kiện j) chứa hai hoặc ba số nguyên cách nhau bởi dấu cách. Gọi số nguyên đầu tiên là \(T_j\). Ý nghĩa của dòng đó như sau:
1 P_j: xác định tọa độ của hạt bụi thứ \(P_j\) tại thời điểm xảy ra sự kiện thứ \(j\).2 L_j: dùng chổi có bề rộng \(L_j\) thực hiện thao tác H.3 L_j: dùng chổi có bề rộng \(L_j\) thực hiện thao tác V.4 A_j B_j: thêm một hạt bụi tại \((A_j,B_j)\).Với mỗi sự kiện có \(T_j=1\), in ra một dòng chứa hoành độ và tung độ của hạt bụi thứ \(P_j\) tại thời điểm xảy ra sự kiện đó, theo đúng thứ tự các sự kiện.
Các ràng buộc chung ở trên áp dụng cho mọi nhóm. Các ràng buộc bổ sung và số điểm của từng nhóm như sau:
Ví dụ 1
6 2 10
1 1
4 0
4 2 3
3 3
1 1
4 1 2
2 3
2 0
1 4
3 2
1 3
1 2
1 3
3 2
3 3
6 0
Ban đầu, hạt bụi thứ \(1\) ở \((1,1)\) và hạt bụi thứ \(2\) ở \((4,0)\), như trong Hình 1.
Hình 1. Trạng thái ban đầu.
Hình 2. Sau sự kiện 1.
Hình 3. Thao tác ở sự kiện 2.
Hình 4. Sau sự kiện 4.
Hình 5. Thao tác ở sự kiện 5.
Hình 6. Thao tác ở sự kiện 6.
Hình 7. Thao tác ở sự kiện 8.
Ví dụ này thỏa mãn các ràng buộc của nhóm \(1\) và \(5\).
Ví dụ 2
9 4 8
2 3
3 1
1 6
4 3
2 6
1 3
2 2
1 4
2 3
1 2
2 4
1 1
3 6
4 3
7 1
6 3
Ví dụ này thỏa mãn các ràng buộc của nhóm \(1,2,4,5\).
Ví dụ 3
8 1 8
1 5
4 4 1
2 6
1 2
2 3
4 2 2
2 5
1 1
1 3
4 1
3 5
3 2
Ví dụ này thỏa mãn các ràng buộc của nhóm \(1,2,5\).
Ví dụ 4
7 4 9
1 5
2 2
4 2
5 0
2 6
2 3
1 2
3 6
1 4
3 1
1 1
2 2
1 3
4 2
5 1
1 6
5 2
Ví dụ này thỏa mãn các ràng buộc của nhóm \(1,3,4,5\).
Ví dụ 5
20 5 25
10 6
0 4
2 1
1 0
2 3
2 18
3 9
4 1 5
4 0 2
3 10
4 3 3
3 3
2 9
4 9 1
3 12
1 4
3 19
1 3
1 9
2 1
1 7
1 6
4 3 3
1 10
1 1
1 5
2 0
1 2
2 2
1 7
2 17
2 17
9 8
0 17
1 17
3 3
10 10
2 17
2 17
0 17
Ví dụ này thỏa mãn các ràng buộc của nhóm \(1\) và \(5\).
Bản dịch tiếng Việt từ đề chính thức bằng tiếng Anh của Ủy ban Olympic Tin học Nhật Bản, kỳ trại huấn luyện mùa xuân JOI 2019/2020, ngày thi thứ nhất (20/03/2020). Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.