Universal Cup Judging System

Universal Cup

حد الوقت: 3.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100 الصعوبة: [عرض] تفاعلية قابلة للهجوم ✓
الإحصائيات

Vất vả cho em rồi, yêu dấu. Little Cyan Fish không biết mật ngữ của mình có thể truyền tải được bao nhiêu, nhưng vẫn cảm ơn bạn vì đã cùng Little Cyan Fish đi đến chặng đường này. Quá nhiều chuyện, quá nhiều điều phi lý đã xảy ra, Little Cyan Fish mệt rồi, thực sự rất mệt... Trong năm qua, đã vài lần Little Cyan Fish cảm thấy mình sắp tự cứu lấy bản thân, nhưng suy cho cùng, cậu vẫn chưa đủ mạnh mẽ để cắt đứt những sợi dây trói buộc trên cơ thể mình. Little Cyan Fish luôn tưởng tượng rằng ở nơi xa xôi ấy, có một bản ngã khác có thể nhìn thấy rõ tấm bản đồ cuộc đời cậu.

— "Hướng về phương xa" · Chung kết Cuộc thi Lập trình Sinh viên Trung Quốc lần thứ 10

Đây là một bài toán tương tác.

Chà, có lẽ bạn có thể thử xem việc này sẽ khó đến mức nào. Little Cyan Fish cảm thấy cuộc đời mình là một hoán vị chưa rõ hình dạng. Người ta vẫn thường nói thế giới đầy rẫy sự ngẫu nhiên, nhưng tại sao Little Cyan Fish lại luôn kém may mắn đến thế...? A ha! Có lẽ sự ngẫu nhiên vốn dĩ深sâu sắc như vậy! Vì thế, Little Cyan Fish quyết định rằng hoán vị này của cậu sẽ được sinh ngẫu nhiên theo cách sau:

  • Sinh một hoán vị ngẫu nhiên $p_1, p_2, \dots, p_n$: được chọn ngẫu nhiên đồng đều từ tất cả $n!$ hoán vị có thể có từ $1$ đến $n$.
  • Nếu $p_1 > p_n$, thì đảo ngược toàn bộ hoán vị.

Bạn không thể trực tiếp quan sát cấu trúc của hoán vị, nhưng Little Cyan Fish đã ban cho bạn một siêu năng lực: đặt câu hỏi! Mỗi lần, bạn có thể truy vấn tương tác giá trị khoảng cách giữa hai số trong hoán vị theo modulo $3$. Cụ thể, mỗi lần bạn có thể chọn hai số $u, v$ ($1 \le u, v \le n$, $u \ne v$), hoán vị sẽ cho bạn biết giá trị khoảng cách giữa hai số này theo modulo $3$ (tức là tìm hai chỉ số $i, j$ thỏa mãn $p_i = u, p_j = v$, hoán vị sẽ trả lời $|i - j| \bmod 3$).

Bây giờ, Little Cyan Fish muốn bạn thử xem mình có thể thu được gì. Bạn cần giúp Little Cyan Fish xác định hoán vị này trong không quá $25n$ truy vấn.

Dữ liệu vào

Có nhiều bộ test. Dòng đầu tiên của dữ liệu vào chứa một số nguyên duy nhất $T$ ($1 \le T \le 1000$), cho biết số lượng bộ test.

Với mỗi bộ test, trước tiên bạn cần đọc một số nguyên $n$ ($3 \le n \le 10^4$).

Giao thức tương tác

Tiếp theo, quá trình tương tác bắt đầu. Bạn có thể thực hiện không quá $25n$ truy vấn trong mỗi bộ test. Để thực hiện một truy vấn, bạn cần in ra một dòng duy nhất ? u v ($1 \le u, v \le n$, $u \ne v$), mô tả một truy vấn. Sau đó, bạn cần đọc kết quả từ đầu vào chuẩn.

Để đưa ra câu trả lời, bạn cần in ra ! p1 p2 ... pn. Kết quả của bạn phải thỏa mãn $p_1 < p_n$. Việc in ra câu trả lời sẽ không được tính vào giới hạn $25n$ truy vấn. Sau khi in ra câu trả lời, bạn cần đọc bộ test tiếp theo ngay lập tức, hoặc thoát chương trình ngay lập tức.

Sau khi in ra một truy vấn, đừng quên in ký tự xuống dòng và làm rỗng bộ đệm đầu ra (flush). Để làm điều này, bạn có thể sử dụng fflush(stdout) hoặc cout.flush() trong C++, System.out.flush() trong Java, flush(output) trong Pascal, và stdout.flush() trong Python.

Đảm bảo rằng tổng của $n$ trên tất cả các bộ test không vượt quá $10^4$.

Trong bài toán này, đảm bảo rằng trình chấm tương tác là không thích ứng (non-adaptive). Nghĩa là, các hoán vị được xác định ngẫu nhiên như đề bài đã nêu trước quá trình tương tác. Chúng sẽ không thay đổi theo các truy vấn của bạn. Có tổng cộng $30$ test (bao gồm cả test ví dụ).

Ví dụ

Dữ liệu vào 1

2
3
2
1
1
4
1
1
1
0
2

Dữ liệu ra 1

? 1 2
? 2 3
? 1 3
! 1 3 2
? 2 3
? 3 1
? 1 4
? 2 4
? 2 1
! 2 3 1 4

Giải thích

problem_18002_1.png

Hình 1: Little Cyan Fish & <?> tại <?> chụp vào ngày 4 tháng 3 năm 2026

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.