結果
問題 |
No.2978 Lexicographically Smallest and Largest Subarray
|
ユーザー |
![]() |
提出日時 | 2024-12-02 08:47:54 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 212 ms / 2,000 ms |
コード長 | 1,081 bytes |
コンパイル時間 | 3,325 ms |
コンパイル使用メモリ | 251,328 KB |
実行使用メモリ | 25,464 KB |
平均クエリ数 | 1499.00 |
最終ジャッジ日時 | 2024-12-02 08:48:11 |
合計ジャッジ時間 | 17,032 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 57 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; template <class T> using V=vector<T>; template <class T> using VV=V<V<T>>; int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); int n,q; cin>>n>>q; queue<int> B,S; for(int i=1;i<=n;i+=2){ cout<<"? "<<i<<" "<<n<<" "<<i+1<<" "<<n<<endl; int x; cin>>x; if(x==-1) return 0; if(x==1) B.push(i+1),S.push(i); else B.push(i),S.push(i+1); } while(B.size()>1){ auto a=B.front(); B.pop(); auto b=B.front(); B.pop(); cout<<"? "<<a<<" "<<n<<" "<<b<<" "<<n<<endl; int x; cin>>x; if(x==-1) return 0; if(x==1) B.push(b); else B.push(a); } while(S.size()>1){ auto a=S.front(); S.pop(); auto b=S.front(); S.pop(); cout<<"? "<<a<<" "<<a<<" "<<b<<" "<<b<<endl; int x; cin>>x; if(x==-1) return 0; if(x==1) S.push(a); else S.push(b); } auto a=B.front(),b=S.front(); cout<<"! "<<b<<" "<<b<<" "<<a<<" "<<n<<endl; return 0; }