题面什么意思不重要,要求最多2n次询问,我寻思我这个怎么也不可能超过2n啊,但CF上判我第3个点T了。
这个点的初始输入为
2
按照我的算法,依次输入应该是
1
0
1
这才3个询问啊,为啥会T哦

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN = 1e6 + 5;
int inpt()
{
int x = 0, f = 1;
char ch;
for(ch = getchar(); (ch < '0' || ch > '9') && ch != '-'; ch = getchar());
if(ch == '-'){
f = -1;
ch = getchar();
}
do{
x = (x << 3) + (x << 1) + ch - '0';
ch = getchar();
}while(ch >= '0' && ch <= '9');
return x * f;
}
int n;
int p[MAXN];
int main()
{
n = inpt();
int t = 2;
while(true) {
printf("? ");
for(int i = 1; i <= n; i++)
printf("%d%c", i == n ? 1 : t, i == n ? '\n' : ' ');
fflush(stdout);
int tmp = inpt();
if(!tmp) {
p[n] = --t;
break;
}
t++;
}
int del = p[n] - 1;
for(int i = 1; i <= n; i++, del--) {
if(!del)
continue;
int num = n - p[n] + 1;
printf("? ");
for(int i = 1; i <= n; i++)
printf("%d%c", i == n ? num : num + del, i == n ? '\n' : ' ');
fflush(stdout);
int tmp = inpt();
p[tmp] = p[n] - del;
}
printf("! ");
for(int i = 1; i <= n; i++)
printf("%d%c", p[i], i == n ? '\n' : ' ');
fflush(stdout);
return 0;
}