この問題はインタラクティブ問題である。
ダダスは から までの整数をちょうど 1 回ずつ含む順列 を決める。順列 は対話が始まる前に固定され、参加者には公開されない。
あなたの目標は、クエリを使って順列 を正確に特定することである。
クエリでは、 から までの整数をちょうど 1 回ずつ含む順列 を提示する。インタラクターは順列 を
で定め、 のサイクル分解における最長サイクルの長さだけを返す。
この問題はインタラクティブ問題である。
対話の開始時に、参加者のプログラムは次の整数を受け取る。
参加者のプログラムは、? 形式のクエリを最大 回行える。クエリを行うには、次の形式で出力する。
は から までの整数をちょうど 1 回ずつ含む順列でなければならない。同じ順列を複数回クエリしてもよい。クエリを出力した後は、必ず出力バッファを flush すること。
各正しいクエリの後、整数 を入力として受け取る。 は で定義される順列 の最長サイクルの長さである。
順列 を特定できたら、次の形式で最終解答を出力する。
最終解答の ! 出力は 回のクエリ制限には含まれない。最終解答が隠された順列 と異なる場合は不正解となる。最終解答を出力した後も出力バッファを flush し、ただちにプログラムを終了すること。
不正なクエリを出力した場合、または ? 形式のクエリを 回より多く行った場合、-1 を受け取ることがある。その場合はただちにプログラムを終了すること。
対話の例
、隠された順列が の場合を考える。実際の対話では は与えられない。
3 を送る。? 1 2 3 を出力して flush する。このとき なので、インタラクタは 3 を送る。? 3 1 2 を出力して flush する。このとき なので、インタラクタは 1 を送る。! 2 3 1 を出力し、flush して終了する。この例は通信形式と応答の意味を説明するものであり、順列を復元する一般的な方法を示すものではない。
?? 形式のクエリは最大 回行える。