結果
問題 |
No.3126 Dual Query Problem
|
ユーザー |
|
提出日時 | 2025-04-25 21:52:10 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,500 bytes |
コンパイル時間 | 3,742 ms |
コンパイル使用メモリ | 286,004 KB |
実行使用メモリ | 13,056 KB |
最終ジャッジ日時 | 2025-04-25 21:53:16 |
合計ジャッジ時間 | 11,137 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 18 WA * 14 |
ソースコード
#include <bits/stdc++.h> //以下cout時の色設定 #define COUTRESET "\033[0m" // 色をリセット #define COUTRED "\033[31m" // 赤色 #define COUTGREEN "\033[32m" // 緑色 #define COUTYELLOW "\033[33m" // 黄色 #define COUTBLUE "\033[34m" // 青色 using namespace std; using ll=long long; using ull=unsigned long long; using ld=long double; using P=pair<ll,ll>; const ll INF=1e17; const vector<ll> dx={0,0,1,-1,1,1,-1,-1}; const vector<ll> dy={1,-1,0,0,1,-1,-1,1}; #define rep(i,N) for(int i=0;i<N;i++) #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() template <typename T1,typename T2> ostream& operator<<(ostream &os,pair<T1,T2> &pai){ return os<<"("<<pai.first<<","<<pai.second<<") "; } template<typename T> ostream& operator<<(ostream &os,vector<T> vec){ for(auto val:vec){ os<<val<<" "; } return os<<"\n"; } template<typename T> istream& operator>>(istream &is,vector<T> &vec){ for(int i=0;i<(int)vec.size();i++){ is>>vec[i]; } return is; } template<typename T,typename T2> istream& operator>>(istream &is,pair<T,T2> &pai){ is>>pai.first>>pai.second; return is; } template <typename T> void print(const T &vec){ int i=0; for(auto val:vec){ cout<<i<<":"<<val<<","; i++; } cout<<'\n'; } template<typename T> void print2(const vector<vector<T>> &vec){ int i=0; for(auto v:vec){ cout<<i<<": "; for(auto a:v){ cout<<a<<" "; } i++; cout<<'\n'; } } template<class T> void chmin(T &a,T b){ if(a>b){ a=b; } return; } template<class T> void chmax(T &a,T b){ if(a<b){ a=b; } return; } int main(){ cin.tie(0)->sync_with_stdio(0); int N,Q; cin>>N>>Q; vector<int> X(N); rep(i,N){ cin>>X[i]; } set<int> included; int need=0; rep(i,N){ if(included.contains(X[i])){ need++; }else{ need+=2; included.insert(X[i]); } } if(need>Q){ cout<<"No"; return 0; } map<int,int> pos; int q=0; rep(i,N){ if(pos.contains(X[i])){ cout<<"2 "<<pos[X[i]]<<"\n"; q++; }else{ int siz=(int)pos.size(); cout<<"1 "<<siz+1<<" "<<X[i]<<"\n"; pos[X[i]]=siz+1; cout<<"2 "<<siz+1<<"\n"; q+=2; } } while(q<Q){ cout<<"1 1 1"<<"\n"; q++; } }