結果
問題 |
No.3126 Dual Query Problem
|
ユーザー |
|
提出日時 | 2025-04-25 22:04:43 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,166 bytes |
コンパイル時間 | 3,321 ms |
コンパイル使用メモリ | 283,076 KB |
実行使用メモリ | 8,704 KB |
最終ジャッジ日時 | 2025-04-25 22:05:43 |
合計ジャッジ時間 | 20,643 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 1 WA * 31 |
ソースコード
#include <bits/stdc++.h> #include <stdio.h> using namespace std; long long int LMINF = -1e18; long long int modint = 1000000007; int main() { int row = 0; int n,q; cin >> n >> q; vector<int> X(n); set<int> S; for(int i = 0; i < n; i++){ cin >> X[i]; S.insert(X[i]); } if(q < (int)S.size()*2){ cout << "No"; return 0; } vector<int> A; int v; while(!S.empty()){ v = *begin(S); A.push_back(v); cout << 1 << " " << (int)A.size() << " " << v << endl; row++; S.erase(v); } int minidx,maxidx; int search; for(int i = 0; i < n; i++){ minidx = 0; maxidx = (int)A.size()-1; while(true){ search = (minidx+maxidx)/2; if(A[search] < X[i]){ minidx = search+1; } else if(A[search] > X[i]){ maxidx = search; } else { cout << 2 << " " << search+1 << endl; row++; break; } } } while(row < q){ cout << 1 << " " << 1 << " " << 1 << endl; row++; } }