結果
問題 | No.2307 [Cherry 5 th Tune *] Cool 46 |
ユーザー |
|
提出日時 | 2023-07-08 15:09:27 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 759 ms / 2,000 ms |
コード長 | 3,107 bytes |
コンパイル時間 | 1,340 ms |
コンパイル使用メモリ | 116,060 KB |
最終ジャッジ日時 | 2025-02-15 09:03:16 |
ジャッジサーバーID (参考情報) |
judge1 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 |
ソースコード
#include<iostream> #include<set> #include<algorithm> #include<vector> #include<string> #include<set> #include<map> #include<numeric> #include<queue> #include<cmath> using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair<ll,ll> P; typedef pair<int,P> PP; const ll MOD=998244353; const double PI=acos(-1); void solve(){ int N,M; cin>>N>>M; vector<int> A(N),B(M); for(int i=0;i<N;i++){ cin>>A[i]; } for(int i=0;i<M;i++){ cin>>B[i]; } set<int> stA,stB; deque<pair<string,int>> deq; for(int i=0;i<N;i++){ stA.insert(A[i]); } for(int i=0;i<M;i++){ stB.insert(B[i]); } bool flag=false; int s=0; for(int i=0;i<M;i++){ if(stA.count(B[i])){//Aに B[i]が含まれる場合 flag=true; if(s==0){ deq.emplace_back("Red",B[i]); deq.emplace_back("Blue",B[i]); s^=1; }else{ //s==1 deq.emplace_back("Blue",B[i]); deq.emplace_back("Red",B[i]); s^=1; } stA.erase(B[i]); stB.erase(B[i]); } } if(flag){ for(int v:stA){ deq.emplace_front("Red",v); } if(s==1){ for(int v:stB){ deq.emplace_back("Blue",v); } cout<<"Yes"<<endl; for(auto [str,v]:deq){ cout<<str<<' '<<v<<endl; } }else{ //s==0 bool is= true; cout<<"Yes"<<endl; for(auto [str,v]:deq){ cout<<str<<' '<<v<<endl; if(str=="Blue" && is){ is=false; for(int v:stB){ cout<<"Blue"<<' '<<v<<endl; } } } } /* if(s==1){ //最初にredをfrontで全部いれて //最後にbackで全部入れる for(int v:stA){ deq.emplace_front("Red",v); } for(int v:stB){ deq.emplace_back("Blue",v); } }else{ //最初にblueをfrontで全部いれて //最後にredで全部入れる for(int v:stB){ deq.emplace_front("Blue",v); } for(int v:stA){ deq.emplace_back("Red",v); } } */ }else{ //flag=false; if(N>0 && M>0){ cout<<"No"<<endl; }else{ cout<<"Yes"<<endl; if(N>0){ for(int i=0;i<N;i++){ cout<<"Red"<<' '<<A[i]<<endl; } }else{ //M>0 for(int i=0;i<M;i++){ cout<<"Blue"<<' '<<B[i]<<endl; } } } } } int main(){ int T; cin>>T; for(int t=0;t<T;t++){ solve(); } }