QOJ.ac

QOJ

時間限制: 4.0 s 記憶體限制: 2048 MB 總分: 100 互動

#17326. Vụ trộm thế kỷ

统计

Sau khi lên kế hoạch cho vụ trộm công phu nhất để đánh cắp Viên ngọc Hoàng gia của Bá tước Monte Carlo, bạn đã gặp phải chướng ngại vật cuối cùng trên con đường của mình: một chiếc két sắt bị khóa. Tuy nhiên, bạn đã được huấn luyện cho chính khoảnh khắc này và rèn giũa khả năng phá két của mình.

Chiếc két sắt có $N$ vòng quay, mỗi vòng có thể được đặt thành bất kỳ giá trị nguyên nào từ $1$ đến $2N$. Bá tước Monte Carlo đã cấu hình két sắt với một giá trị bí mật chính xác cho mỗi vòng quay. Để cố gắng mở két, bạn đặt mỗi vòng quay thành một giá trị tùy chọn, sau đó xoay tay nắm cửa két. Nếu mọi vòng quay đều được đặt đúng giá trị bí mật của nó, bạn sẽ không cảm thấy lực cản nào và cánh cửa sẽ mở ra ngay lập tức.

Tất nhiên, việc mở két bằng cách đoán ngẫu nhiên tất cả các giá trị bí mật đúng là rất khó thành công. Tuy nhiên, là một chuyên gia phá két, ngay cả khi bạn đoán sai, bạn vẫn cảm thấy một chút lực cản khi cố gắng mở cửa và bạn có thể sử dụng thông tin đó để giúp giải mã các giá trị bí mật chính xác. Nếu một vòng quay có giá trị bí mật là $h$ và vòng quay đó được đặt là $d$ khi bạn cố gắng mở cửa, vòng quay sẽ tạo ra lực cản $|h - d|$ đối với việc xoay tay nắm cửa. Bạn có thể cảm nhận được lực cản tối đa trên tất cả các vòng quay. (Lưu ý rằng nếu giá trị này là $0$, bạn đã mở két thành công và hoàn thành vụ trộm của mình!)

Thật không may, đội an ninh đã biết về sự hiện diện của bạn và họ đang tiến gần đến vị trí của bạn. Bạn có thể thực hiện một lần thử mở két mỗi giây, nhưng họ sẽ đến sau $4N$ giây nữa! Liệu bạn có thể hoàn thành vụ trộm trước khi bị bắt không?

Giao tiếp

Đây là một bài toán tương tác. Quá trình tương tác bắt đầu bằng việc đọc một số nguyên $N$ ($1 \le N \le 500$) từ đầu vào tiêu chuẩn, là số lượng vòng quay trên két sắt. Chương trình của bạn có thể thực hiện tối đa $4N$ lần thử để mở cửa két bằng cách chỉ định một giá trị để thử cho mỗi vòng quay. Sau đó, bạn sẽ được thông báo về lực cản mà bạn cảm nhận được từ tay nắm cửa sau mỗi lần thử.

Để thực hiện một lần thử, hãy in một dòng chứa $N$ số nguyên cách nhau bởi dấu cách $d_1, d_2, \dots, d_N$ ($1 \le d_i \le 2N$), là các giá trị bạn đề xuất cho mỗi vòng quay. Sau đó, đọc một số nguyên duy nhất từ đầu vào tiêu chuẩn đại diện cho lực cản mà bạn cảm nhận được từ tay nắm cửa, $\max_i |h_i - d_i|$, trong đó $h_i$ là giá trị bí mật (không biết trước đối với bạn) của vòng quay $i$. Nếu lực cản là $0$, bạn đã mở được két và chương trình của bạn nên kết thúc. Nếu không, nếu bạn vẫn còn lượt thử, bạn có thể thử lại.

Nếu bạn hết lượt thử, chương trình của bạn nên thoát một cách sạch sẽ (mặc dù nó sẽ bị đánh giá là sai vì không thể phá két kịp thời để trốn thoát khỏi lính canh).

Giá trị bí mật của mỗi vòng quay đã được Bá tước Monte Carlo cấu hình trước vụ trộm và sẽ không thay đổi để phản ứng lại các nỗ lực phá két của bạn.

Ghi chú

Đừng quên xóa bộ đệm luồng đầu ra (flush) sau mỗi dòng bạn in và thoát sạch sẽ sau khi quá trình tương tác kết thúc. Vui lòng đảm bảo rằng bạn tuân thủ chính xác giao thức tương tác ở trên liên quan đến thông tin nào cần in trên dòng đầu ra nào: ví dụ, nếu giao thức yêu cầu bạn in một danh sách các số nguyên cách nhau bởi dấu cách trên một dòng duy nhất, giám khảo sẽ không chấp nhận mỗi số nguyên trên dòng riêng của nó.

Nếu giám khảo nhận được đầu vào không hợp lệ hoặc không mong đợi, nó sẽ in $-1$ và sau đó thoát ngay lập tức. Chương trình của bạn phải phát hiện báo cáo lỗi này và thoát sạch sẽ để nhận phán quyết Wrong Answer. Nếu chương trình của bạn bị chặn chờ đợi tương tác thêm từ giám khảo, hoặc cố gắng diễn giải $-1$ như một giá trị lực cản, bạn có thể nhận được một phán quyết bị từ chối khác (chẳng hạn như Time Limit Exceeded hoặc Runtime Error) thay vì Wrong Answer.

Bạn đã được cung cấp một công cụ dòng lệnh để kiểm tra cục bộ. Công cụ này có các chú thích ở đầu giải thích cách sử dụng.

Ví dụ

Ví dụ 1

Đọc Viết
3
1 1 1
5
3 4 5
1
4 5 6
0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.