#P11818. Find the Position of 1 in a Hidden Permutation
Find the Position of 1 in a Hidden Permutation
Find the Position of 1 in a Hidden Permutation
This is an interactive problem. In this problem, the interactive library is adaptive.
There is a hidden permutation p0, p1, ..., pn-1 of the integers from \(0\) to \(n-1\). You are allowed to ask at most \(\lceil \frac{5n}{2} \rceil\) queries. In each query, you choose two distinct indices \(i\) and \(j\) (with \(0 \le i,j < n\) and \(i \neq j\)) and the interactor returns \(\gcd(p_i, p_j)\). Note that by definition, \(\gcd(0,a)=\gcd(a,0)=a\).
Your task is to find the index \(j\) such that \(p_j=1\); that is, determine the position of \(1\) in the permutation.
Implementation Details:
- This is an interactive problem with multiple test cases in a single test file.
- You do not need to implement the
main
function. - You must include the following declaration at the top of your source file:
int ask(int, int);
You should implement the following function:
int solve(int n)
: Processes a single test case with a permutation of length \(n\). It should return a non-negative integer \(j\) (with \(0 \le j < n\)) such that \(p_j = 1\).
You can call the following function to make queries:
int ask(int i, int j)
: Returns \(\gcd(p_i, p_j)\). You must ensure that \(0 \le i, j < n\) and \(i \neq j\).
Important: The interactive library is adaptive, meaning it will choose responses dynamically (as long as they are consistent) based on your queries. This allows a trivial strategy if no queries are performed.
inputFormat
There is no traditional input. Instead, the interactor handles multiple test cases and provides responses to queries via the ask
function. The only parameter your solve
function receives is an integer n
representing the size of the hidden permutation.
outputFormat
Your solve
function should return an integer j
(with 0 ≤ j < n
) such that the hidden permutation satisfies p[j] = 1
.
sample
Test case 1: n = 1
Output: 0