IOI 2007 - Aliens

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 64M Input: bàn phím Output: màn hình

Mirko rất thích những hình vẽ trên đồng ruộng, được tạo nên từ cây cỏ bị ép rạp và được cho là tác phẩm của người ngoài hành tinh. Một đêm hè, cậu quyết định tự tạo một hình như vậy trên đồng cỏ của bà. Là người yêu nước, Mirko chọn phần hình bàn cờ trên quốc huy Croatia: một bàn cờ \(5\times5\) gồm \(13\) ô vuông đỏ và \(12\) ô vuông trắng xen kẽ nhau.

Đồng cỏ là một hình vuông được chia thành \(N\times N\) ô. Ô ở góc dưới bên trái có tọa độ \((1,1)\), còn ô ở góc trên bên phải có tọa độ \((N,N)\).

Mirko chọn một số nguyên lẻ \(M\ge3\). Mỗi ô vuông của bàn cờ chiếm một khối \(M\times M\) ô của đồng cỏ, với các cạnh song song với các cạnh đồng cỏ. Toàn bộ bàn cờ nằm trọn trong đồng cỏ. Cậu chỉ ép rạp cỏ trong các ô vuông đỏ và giữ nguyên tất cả phần cỏ còn lại.

Sau khi Mirko đi ngủ, tác phẩm của cậu thu hút sự chú ý của những người ngoài hành tinh thật sự. Từ tàu vũ trụ phía trên đồng cỏ, họ khảo sát hình vẽ bằng một thiết bị đơn giản: thiết bị chỉ có thể xác định cỏ trong một ô cụ thể có bị ép rạp hay không.

Họ đã tìm được một ô có cỏ bị ép rạp và muốn xác định ô chính giữa hình vẽ để ngắm nhìn tác phẩm. Họ không biết kích thước \(M\) của các ô vuông trên bàn cờ.

Cho kích thước \(N\), tọa độ \((X_0,Y_0)\) của một ô có cỏ bị ép rạp và khả năng tương tác với thiết bị, hãy tìm tọa độ ô chính giữa hình vẽ. Bạn được sử dụng thiết bị không quá \(300\) lần trong mỗi lần chạy trên một bộ dữ liệu.

Tương tác

Đây là bài toán tương tác. Chương trình gửi lệnh qua đầu ra chuẩn và đọc phản hồi của thiết bị từ đầu vào chuẩn.

Khi bắt đầu, đọc ba số nguyên \(N,X_0,Y_0\) trên một dòng, phân cách bởi một dấu cách. \(N\) là kích thước đồng cỏ; \((X_0,Y_0)\) là tọa độ một ô có cỏ bị ép rạp.

Để kiểm tra ô \((X,Y)\), ghi một dòng có dạng examine X Y. Các tọa độ phải thỏa mãn \(1\le X,Y\le N\). Nếu tọa độ nằm ngoài đồng cỏ hoặc chương trình gửi quá \(300\) lệnh examine, chương trình nhận \(0\) điểm cho bộ dữ liệu đó.

Thiết bị trả lời bằng một dòng chứa từ true nếu cỏ trong ô \((X,Y)\) bị ép rạp, hoặc từ false nếu không.

Khi đã tìm được ô chính giữa, ghi một dòng có dạng solution XC YC, trong đó \((X_C,Y_C)\) là tọa độ ô đó. Chương trình sẽ được tự động kết thúc ngay khi xuất lời giải.

Các từ lệnh và phản hồi phải được viết đúng chữ thường như trên. Sau mỗi lần ghi ra đầu ra chuẩn, phải đẩy dữ liệu khỏi bộ đệm (flush) để bộ chấm nhận được lệnh.

Ràng buộc

  • \(15\le N\le 2\,000\,000\,000\).
  • \(1\le X_0,Y_0\le N\); cỏ tại ô \((X_0,Y_0)\) được bảo đảm bị ép rạp.
  • \(M\) là số nguyên lẻ, \(M\ge3\); bàn cờ kích thước \(5M\times5M\) nằm trọn trong đồng cỏ.
  • Không quá \(300\) lệnh examine trong mỗi lần chạy trên một bộ dữ liệu.
  • Mỗi bộ dữ liệu có một đáp án đúng duy nhất, cố định và không phụ thuộc vào những câu hỏi chương trình đặt ra.

Chấm điểm trên hệ thống

Lưu ý: Cách chia nhóm và tính điểm dưới đây là bản điều chỉnh để luyện tập trên hệ thống, không khẳng định tương đương cách chấm tại IOI gốc.

Mỗi nhóm được chấm độc lập: chỉ nhận điểm của nhóm khi vượt qua tất cả bộ kiểm thử trong nhóm; nếu có bộ kiểm thử không đạt thì nhóm nhận 0 điểm. Tổng điểm tối đa là 100.

Nhãn nhóm là phần số trong tên tệp dữ liệu gốc. Tất cả tệp cùng nhãn, kể cả các hậu tố chữ và pf, đều thuộc nhóm đó.

Nhãn nhóm Điểm Tệp dữ liệu vào gốc
1 10 aliens/aliens.in.1a, aliens/aliens.in.1b
2 10 aliens/aliens.in.2a, aliens/aliens.in.2b
3 10 aliens/aliens.in.3a, aliens/aliens.in.3b
4 10 aliens/aliens.in.4a, aliens/aliens.in.4b
5 10 aliens/aliens.in.5a, aliens/aliens.in.5b
6 10 aliens/aliens.in.6a, aliens/aliens.in.6b
7 10 aliens/aliens.in.7a, aliens/aliens.in.7b, aliens/aliens.in.7c
8 10 aliens/aliens.in.8a, aliens/aliens.in.8b, aliens/aliens.in.8c
9 10 aliens/aliens.in.9a, aliens/aliens.in.9b, aliens/aliens.in.9c
10 10 aliens/aliens.in.10a, aliens/aliens.in.10b, aliens/aliens.in.10c

Các ví dụ trong đề không tính điểm.

Ví dụ

Ví dụ 1

Input
19 7 4
true
false
false
true
Output
examine 11 2
examine 2 5
examine 9 14
examine 18 3
solution 12 9
Note

Các dòng đầu vào và đầu ra được trao đổi xen kẽ, không phải đọc toàn bộ đầu vào trước khi xuất lệnh. Bảng dưới biểu diễn đúng thứ tự tương tác; phản hồi nằm cùng hàng với lệnh tương ứng.

Lệnh chương trình gửi Dữ liệu thiết bị gửi
19 7 4
examine 11 2 true
examine 2 5 false
examine 9 14 false
examine 18 3 true
solution 12 9

Hình dưới minh họa đồng cỏ và hình vẽ với \(N=19\), \(M=3\). Các ô có cỏ bị ép rạp được tô xám. Ô chính giữa có tọa độ \((12,9)\), được đánh dấu bằng chấm đen.

Nguồn

IOI 2007.

Tệp

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: