?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
187575704 |
Practice: DaiRuiChen007 |
1634D - 80 | C++14 (GCC 6-32) | Accepted | 109 ms | 8 KB | 2023-01-02 07:28:19 | 2023-01-02 07:28:19 |
// LUOGU_RID: 98484067 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; inline int read(int i,int j,int k) { cout<<"? "<<i<<" "<<j<<" "<<k<<endl; int ret; cin>>ret; return ret; } inline pii upd(int i,int j,int k,int l) { int a=read(i,j,k); int b=read(i,j,l); int c=read(i,k,l); int d=read(j,k,l); int x=max(max(a,b),max(c,d)); if(a==x&&b==x) return make_pair(i,j); if(a==x&&c==x) return make_pair(i,k); if(a==x&&d==x) return make_pair(j,k); if(b==x&&c==x) return make_pair(i,l); if(b==x&&d==x) return make_pair(j,l); if(c==x&&d==x) return make_pair(k,l); return make_pair(0,0); } inline void solve() { int n; cin>>n; pii ans=make_pair(1,2); for(int i=3;i<n;i+=2) ans=upd(ans.first,ans.second,i,i+1); if(n%2==1) { for(int i=1;i<n;++i) { if(i!=ans.first&&i!=ans.second) { ans=upd(ans.first,ans.second,i,n); break; } } } cout<<"! "<<ans.first<<" "<<ans.second<<endl; } signed main() { int T; scanf("%d",&T); while(T--) solve(); return 0; }
?
?
?
?