Submission #846737

#TimeUsernameProblemLanguageResultExecution timeMemory
846737IvanJLongest Trip (IOI23_longesttrip)C++17
15 / 100
6 ms600 KiB
#include "longesttrip.h" #include<bits/stdc++.h> #define pb push_back #define all(a) (a).begin(), (a).end() using namespace std; vector<int> longest_trip(int n, int D) { if(D == 3) { vector<int> p; for(int i = 0;i < n;i++) p.pb(i); return p; } if(D == 2) { deque<int> dq; if(!are_connected({0}, {1})) dq.pb(0), dq.pb(2), dq.pb(1); else if(!are_connected({1}, {2})) dq.pb(1), dq.pb(0), dq.pb(2); else dq.pb(0), dq.pb(1), dq.pb(2); for(int i = 3;i < n;i++) { if(are_connected({i}, {dq.front()})) dq.push_front(i); else dq.pb(i); } return vector<int>(all(dq)); } if(D == 1) { vector<int> p1, p2; if(n & 1) p1.pb(n - 1); for(int i = 1;i < n;i += 2) { int a = i - 1, b = i; if(p2.size()) { int c = p1.back(), d = p2.back(); if(are_connected({a}, {b})) { if(are_connected({a}, {c})) { p1.pb(a), p1.pb(b); if(are_connected({b}, {d})) { while(p2.size()) p1.pb(p2.back()), p2.pop_back(); } } else { p2.pb(a), p2.pb(b); if(are_connected({b}, {c})) { while(p1.size()) p2.pb(p1.size()), p1.pop_back(); } } } else { if(are_connected({a}, {c})) { if(are_connected({b}, {d})) p1.pb(a), p2.pb(b); else p1.pb(b), p2.pb(a); } else p1.pb(b), p2.pb(a); } } else { if(are_connected({a}, {b})) { if(p1.size() == 0) p1.pb(a), p1.pb(b); else if(are_connected({a}, {p1.back()})) { p1.pb(a), p1.pb(b); } else { if(are_connected({b}, {p1.back()})) p1.pb(b), p1.pb(a); else p2.pb(a), p2.pb(b); } } else { if(p1.size() == 0) p1.pb(a), p2.pb(b); else if(are_connected({a}, {p1.back()})) p1.pb(a), p2.pb(b); else p1.pb(b), p2.pb(a); } } if(p1.size() < p2.size()) swap(p1, p2); } assert(0 != 0); for(int i = 1;i < (int)p1.size();i++) assert(are_connected({p1[i - 1]}, {p1[i]})); return p1; } return {}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...