?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
188394824 |
Practice: DaiRuiChen007 |
1521C - 42 | C++14 (GCC 6-32) | Accepted | 343 ms | 228 KB | 2023-01-08 10:52:27 | 2023-01-08 10:52:27 |
// LUOGU_RID: 99029786 #include<bits/stdc++.h> using namespace std; inline int read(int t,int i,int j,int x) { cout<<"? "<<t<<" "<<i<<" "<<j<<" "<<x<<endl; int ret; cin>>ret; return ret; } const int MAXN=1e4+1; int p[MAXN],val[MAXN]; inline void solve() { int n,pos=0; cin>>n; vector <int> ch; for(int i=1;i<n;i+=2) { val[i]=read(2,i,i+1,1); if(val[i]<=2) ch.push_back(i); } if(n%2==1) { val[n-1]=read(2,n-1,n,1); if(val[n-1]<=2) ch.push_back(n-1); } for(int x:ch) { val[x+1]=read(2,x+1,x,1); if(val[x]==1) { pos=x; break; } if(val[x+1]==1) { pos=x+1; break; } } p[pos]=1; for(int i=1;i<=n;++i) { if(i==pos) continue; p[i]=read(1,pos,i,n-1); } cout<<"! "; for(int i=1;i<=n;++i) cout<<p[i]<<" "; cout<<endl; } signed main() { int T; cin>>T; while(T--) solve(); return 0; }
?
?
?
?