| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | BOI 2010 - Matching Bins | 100 (p) | 3.0s | 256M |
| 2 | BOI 2010 - Candies | 100 (p) | 3.0s | 256M |
| 3 | BOI 2010 - Mines | 100 (p) | 3.0s | 256M |
Trong kho của một nhà máy có rất nhiều thùng rỗng xếp thành một hàng. Người quản lý muốn đặt một số thùng vào trong các thùng khác để tạo khoảng trống ở đầu bên trái của kho. Robot có thể nhấc một thùng, mang nó sang phải rồi đặt vào một thùng lớn hơn. Chuỗi ba thao tác này là cách duy nhất được phép dùng để di chuyển thùng.
Theo quy định an toàn, mỗi thùng chỉ được chứa nhiều nhất một thùng khác, và thùng được chứa phải rỗng. Người quản lý cũng muốn những cặp thùng lồng vào nhau nằm ở đầu bên trái của hàng còn lại để dễ theo dõi.
Hãy tìm số nguyên \(K\) lớn nhất sao cho có thể đặt \(K\) thùng ngoài cùng bên trái vào \(K\) thùng ngay tiếp theo, theo một thứ tự nào đó.
Dòng đầu chứa hai số nguyên \(M\) và \(N\), lần lượt là kích thước thùng lớn nhất và số thùng. Dòng thứ hai chứa \(N\) số nguyên \(A_i\), là kích thước các thùng theo thứ tự từ trái sang phải.
In một số nguyên là giá trị lớn nhất của \(K\) sao cho robot có thể đặt \(K\) thùng đầu tiên vào \(K\) thùng ngay tiếp theo.
Ví dụ 1
5 10
2 2 1 4 3 2 5 4 2 3
4
Kristian là người bán hàng trong một cửa hàng kẹo. Cửa hàng có \(N\) gói kẹo, mỗi gói có thể chứa một số viên kẹo khác nhau. Khi khách muốn mua \(K\) viên, Kristian phải chọn một số gói sao cho tổng số viên kẹo trong các gói đó đúng bằng \(K\). Nếu không làm được, khách thường bực mình rồi bỏ đi. Chẳng hạn, nếu khách muốn mua \(4\) viên nhưng cửa hàng chỉ có \(5\) gói, mỗi gói chứa \(3\) viên, thì Kristian không thể đáp ứng.
Kristian đã tính được có bao nhiêu số lượng kẹo khác nhau mà mình có thể bán cho vị khách tiếp theo bằng những gói hiện có. Bây giờ, anh muốn mở một gói và thay đổi số viên kẹo trong đó để số lượng lựa chọn khác nhau dành cho khách tăng lên nhiều nhất có thể.
Dòng đầu chứa số nguyên \(N\). Dòng thứ hai chứa \(N\) số nguyên \(B_i\), là số viên kẹo trong từng gói.
In hai số nguyên \(P\) và \(Q\), cách nhau bởi một dấu cách. Kristian sẽ lấy một gói đang chứa \(P\) viên kẹo và thay đổi số viên trong gói đó thành \(Q\). Giá trị \(P\) phải bằng một trong các giá trị \(B_i\).
Nếu có nhiều cách thay đổi tối ưu, hãy chọn cách có \(P\) nhỏ nhất. Trong số các cách tối ưu có \(P\) nhỏ nhất đó, hãy chọn cách có \(Q\) nhỏ nhất.
Ví dụ 1
4
1 3 4 4
4 9
Ban đầu, Kristian có thể đáp ứng \(9\) số lượng kẹo khác nhau: \(1,3,4,5,7,8,9,11,12\). Sau khi đổi một gói chứa \(4\) viên thành gói chứa \(9\) viên, anh có thể đáp ứng \(13\) số lượng khác nhau: \(1,3,4,5,7,8,9,10,12,13,14,16,17\).
Ví dụ 2
5
3 3 3 3 3
3 1
Heino vẽ một bảng ô vuông gồm \(H\) hàng và \(W\) cột. Mỗi ô hoặc trống, hoặc chứa một quả mìn. Indrek, một người bạn thân của Heino, vẽ một bảng khác cùng kích thước. Trong mỗi ô của bảng mình, Indrek ghi tổng số mìn trong ô tương ứng của bảng Heino và tất cả các ô kề với ô đó. Hai ô được xem là kề nhau nếu chúng có ít nhất một điểm chung.
Sau đó, Indrek xóa bảng của Heino. Cho bảng của Indrek, hãy giúp Heino khôi phục bảng mìn ban đầu. Luôn tồn tại ít nhất một cách khôi phục hợp lệ.
Dòng đầu của mỗi tệp chứa hai số nguyên \(H\) và \(W\), lần lượt là số hàng và số cột. Mỗi dòng trong \(H\) dòng tiếp theo chứa \(W\) chữ số, mô tả bảng của Indrek.
Tệp kết quả tương ứng phải chứa \(H\) dòng, mỗi dòng gồm \(W\) ký tự: X biểu thị một ô có mìn và . biểu thị một ô trống.
Nếu có nhiều cách khôi phục hợp lệ, có thể nộp bất kỳ cách nào.
Đây là bài chỉ nộp kết quả. Bạn được cung cấp \(10\) tệp dữ liệu vào, từ mines.01.in đến mines.10.in. Hãy tạo các tệp kết quả tương ứng từ mines.01.out đến mines.10.out và nộp chúng trong một tệp ZIP, với các tệp kết quả nằm trực tiếp trong ZIP. Không nộp chương trình.
Ví dụ 1
3 5
24531
46631
34310
.XXX.
.XX..
XX...