結果
問題 | No.3126 Dual Query Problem |
ユーザー |
|
提出日時 | 2025-04-26 00:53:37 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 121 ms / 2,000 ms |
コード長 | 1,198 bytes |
コンパイル時間 | 4,845 ms |
コンパイル使用メモリ | 259,404 KB |
実行使用メモリ | 14,448 KB |
最終ジャッジ日時 | 2025-06-20 02:50:56 |
合計ジャッジ時間 | 13,111 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) #define all(x) begin(x), end(x) template <typename T> bool chmin(T& x, T y) { return x > y ? (x = y, true) : false; } template <typename T> bool chmax(T& x, T y) { return x < y ? (x = y, true) : false; } struct IOST { IOST() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(20); } } IOST; using mint = atcoder::modint998244353; void solve() { int n, q; cin >> n >> q; vector<int> x(n); rep(i, 0, n) cin >> x[i]; map<int, int> mp, rmp; mp[1] = 0; rmp[0] = 1; int ct = 1; vector<pair<int, int>> ans; rep(i, 0, n) { if (rmp.count(x[i])) { ans.push_back({-1, rmp[x[i]]}); } else { mp[++ct] = x[i]; rmp[x[i]] = ct; ans.push_back({ct, x[i]}); ans.push_back({-1, ct}); } } while ((int)ans.size() < q) ans.push_back({1, 1}); if ((int)ans.size() > q) cout << "No\n"; else { cout << "Yes\n"; for (auto [a, b] : ans) { if (a == -1) cout << "2 " << b << "\n"; else cout << "1 " << a << " " << b << "\n"; } } } int main() { int t = 1; // cin>>t; rep(i, 0, t) solve(); }