結果

問題 No.3126 Dual Query Problem
ユーザー jiyujin816
提出日時 2025-04-25 21:44:03
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 2,500 bytes
コンパイル時間 4,082 ms
コンパイル使用メモリ 287,400 KB
実行使用メモリ 13,060 KB
最終ジャッジ日時 2025-04-25 21:44:36
合計ジャッジ時間 11,669 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1 WA * 2
other AC * 18 WA * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

#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++;
    }
}
0