結果
問題 | No.1257 変わった平均値 |
ユーザー | ok |
提出日時 | 2020-10-16 23:11:20 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 5,710 bytes |
コンパイル時間 | 1,644 ms |
コンパイル使用メモリ | 124,944 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-20 23:40:28 |
合計ジャッジ時間 | 2,386 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | AC | 2 ms
6,944 KB |
testcase_03 | AC | 2 ms
6,944 KB |
testcase_04 | AC | 2 ms
6,940 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,940 KB |
testcase_08 | AC | 2 ms
6,940 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 2 ms
6,944 KB |
testcase_11 | AC | 2 ms
6,944 KB |
testcase_12 | AC | 2 ms
6,940 KB |
testcase_13 | AC | 2 ms
6,944 KB |
testcase_14 | AC | 2 ms
6,944 KB |
testcase_15 | AC | 2 ms
6,944 KB |
testcase_16 | AC | 2 ms
6,940 KB |
testcase_17 | AC | 2 ms
6,944 KB |
testcase_18 | AC | 2 ms
6,940 KB |
testcase_19 | AC | 2 ms
6,940 KB |
testcase_20 | AC | 2 ms
6,944 KB |
testcase_21 | AC | 2 ms
6,940 KB |
testcase_22 | AC | 2 ms
6,940 KB |
testcase_23 | AC | 2 ms
6,944 KB |
testcase_24 | AC | 1 ms
6,940 KB |
ソースコード
#include<iostream> #include<string> #include<iomanip> #include<cmath> #include<vector> #include<algorithm> #include<utility> #include<queue> #include<map> using namespace std; #define int long long #define endl "\n" constexpr long long INF = (long long)1e18; constexpr long long MOD = 1'000'000'007; // struct fast_io { // fast_io(){ // std::cin.tie(nullptr); // std::ios::sync_with_stdio(false); // }; // } fio; #define a first.first #define b first.second #define c second.first #define z second.second int A, B, C, D, E, F; vector<pair<int, char>> ans; void dijkstra(){ // priority_queue<pair<int,pair<int,int>,pair<int,int>>>,vector<pair<int,pair<int,int>,pair<int,int>>>>,greater<pair<int,pair<int,int>,pair<int,int>>>>> q; // priority_queue<pair<int,pair<int,int>,pair<int,int>>>,vector<pair<int,pair<int,int>,pair<int,int>>>>,greater<pair<int,pair<int,int>,pair<int,int>>>>>> q; // priority_queue<pair<int,pair<pair<int,int>,pair<int,int>>>>,vector<pair<int,pair<pair<int,int>,pair<int,int>>>>,greater<pair<int,pair<pair<int,int>,pair<int,int>>>>> q; // priority_queue<pair<int,pair<int, pair<pair<int,int>,pair<int,int>>>>,vector<pair<int,pair<int, pair<pair<int,int>,pair<int,int>>>>>,greater<pair<int,pair<int, pair<pair<int,int>,pair<int,int>>>>>> q; priority_queue<pair<int, pair<pair<int,int>,pair<int,int>>>,vector<pair<int, pair<pair<int,int>,pair<int,int>>>>,greater<pair<int, pair<pair<int,int>,pair<int,int>>>>> q; map<pair<pair<int,int>,pair<int,int>>,int> d; map<pair<pair<int,int>,pair<int,int>>,pair<pair<int,int>,pair<pair<int,int>,pair<int,int>>>> d2; d[{{A,B},{C,0}}] = 1; d2[{{A,B},{C,0}}] = {{-1,-1},{{-1,-1},{-1,-1}}}; q.push({1, {{A,B},{C,0}}}); // cout<<"test"<<endl; while(!q.empty()){ pair<int, pair<pair<int,int>,pair<int,int>>> p = q.top();q.pop(); pair<pair<int,int>,pair<int,int>> v = p.second; // cout<<"A "<<v.a<<" B "<<v.b<<" C "<<v.c<<" z "<<v.z<<endl; if(min({v.a,v.b,v.c}) > max({D,E,F})) break; if(v.a == E && v.b == F && v.c || v.a == E && v.c == F && v.b || v.b == E && v.a == F && v.c || v.b == E && v.c == F && v.a || v.c == E && v.a == F && v.b || v.c == E && v.b == F && v.a) { // cout<<"[]"<<endl; pair<pair<int,int>,pair<int,int>> V = p.second; if(V.a == D && V.b == E && V.c == F) { if(ans.size() && (int)ans.size() + 1 < d[V] - 1) return ; if(d[V] == 1) { ans.clear(); ans.push_back({2,'X'}); //return ; } else { // for(;V.a != -1;){ // ans.push_back({1, 'A' + d2[V].first.first}); // V = d2[V].second; // } ans.clear(); for(;;){ // cout<<"V A "<<V.a<<" B "<<V.b<<" C "<<V.c<<" "<< d2[V].first.first<<endl; if(d2[V].first.first == -1) break; ans.push_back({1, 'A' + d2[V].first.second}); V = d2[V].second; // string str; // cin>>str; } return ; } } else { ans.clear(); for(;;){ // cout<<"V A "<<V.a<<" B "<<V.b<<" C "<<V.c<<" "<< d2[V].first.first<<endl; if(d2[V].first.first == -1) break; ans.push_back({1, 'A' + d2[V].first.second}); V = d2[V].second; // string str; // cin>>str; } ans.push_back({2,'X'}); } // return ; } // cout<<"<><>"<<endl; if(d.count(v) && d[v] < p.first) continue; { pair<pair<int,int>,pair<int,int>> n; n = v; n.a *= 2; n.b *= 2; if(d.count(n) == 0 || d[n] < d[v] + 2) { d[n] = d[v] + 2; d2[n] = {{1,2}, v}; q.push({d[n], n}); } } { pair<pair<int,int>,pair<int,int>> n; n = v; n.a *= 2; n.c *= 2; if(d.count(n) == 0 || d[n] < d[v] + 2) { d[n] = d[v] + 2; d2[n] = {{1,1}, v}; q.push({d[n], n}); } } { pair<pair<int,int>,pair<int,int>> n; n = v; n.b *= 2; n.c *= 2; if(d.count(n) == 0 || d[n] < d[v] + 2) { d[n] = d[v] + 2; d2[n] = {{1,0}, v}; q.push({d[n], n}); } } } } signed main(){ cout<<fixed<<setprecision(10); cin>>A>>B>>C>>D>>E>>F; dijkstra(); if(ans.size() == 0) cout<<"No"<<endl; else { cout<<"Yes"<<endl; for(int i = ans.size()-1; i >= 0; i--) { if(ans[i].first == 1) { cout<<1<<" "<<ans[i].second<<endl; cout<<1<<" "<<ans[i].second<<endl; } else { cout<<2<<endl; } } } return 0; }