Omkar và ý nghĩa cuộc sống
Đề bài
Mô tả
Có một hoán vị ẩn của các số nguyên . Bạn không biết hoán vị này và phải tìm ra nó bằng các câu hỏi.
Một câu hỏi là một dãy gồm số nguyên, mỗi số nằm trong đoạn . Dãy không bắt buộc phải là hoán vị, các phần tử có thể trùng nhau.
Với câu hỏi đó, hệ thống tính dãy tổng với mọi , rồi trả lời bằng chỉ số nhỏ nhất sao cho giá trị xuất hiện nhiều hơn một lần trong dãy . Nếu mọi phần tử của đều đôi một khác nhau, hệ thống trả lời .
Bạn được phép hỏi không quá câu hỏi. Hãy tìm hoán vị .
Giao thức tương tác
Đây là bài toán tương tác. Chương trình của bạn giao tiếp với hệ thống chấm qua đầu vào/ra chuẩn.
Đầu tiên, chương trình đọc số nguyên là độ dài hoán vị.
Sau đó bạn có thể thực hiện hai loại thao tác:
? a_1 a_2 ... a_n(với ): đặt một câu hỏi. Hệ thống trả lời số nguyên như mô tả ở trên ().! p_1 p_2 ... p_n: đưa ra đáp án và kết thúc chương trình.
Số câu hỏi dạng ? không được vượt quá . Thao tác ! không tính vào giới hạn này. Sau khi in đáp án, chương trình phải dừng ngay lập tức.
Quan trọng: sau mỗi lần in ra, bạn phải flush output:
- C++:
cout << endl;hoặccout.flush(); - Python:
print(..., flush=True)
Ràng buộc
- là một hoán vị của
- với mọi câu hỏi
- Số câu hỏi tối đa:
Ví dụ
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 5 | Hệ thống cho biết . Hoán vị ẩn là | |
| ? 4 4 2 3 2 | 2 | . Chỉ có giá trị lặp lại, nó xuất hiện lần đầu ở vị trí |
| ? 3 5 1 5 5 | 0 | , mọi giá trị đôi một khác nhau |
| ? 5 2 4 3 1 | 1 | . Cả và đều lặp lại; xuất hiện lần đầu ở vị trí , ở vị trí , nên đáp án là |
| ! 3 2 1 5 4 | Đưa ra hoán vị ẩn |
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 2 | Hệ thống cho biết . Hoán vị ẩn là | |
| ? 2 1 | 0 | , hai giá trị khác nhau |
| ? 1 2 | 1 | , giá trị lặp lại, xuất hiện lần đầu ở vị trí |
| ! 2 1 | Đưa ra hoán vị ẩn |
Ba câu hỏi ở ví dụ đầu chỉ nhằm minh hoạ cách tương tác, chúng không tạo thành một chiến lược đúng để xác định hoán vị.
Bình luận