Submission #1233567

#TimeUsernameProblemLanguageResultExecution timeMemory
1233567AMnuLongest Trip (IOI23_longesttrip)C++20
100 / 100
6 ms416 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; vector<int> longest_trip(int N, int D) { vector <int> A, B; bool know = 0; A.push_back(0); B.push_back(1); for (int i=2;i<N;i++) { if (are_connected({i},{B.back()})) { B.push_back(i); if (B.size() == 2) { swap(B[0],B[1]); } else { know = 0; } } else if (know) { A.push_back(i); know = 0; } else if (are_connected({A.back()},{B.back()})) { while (!B.empty()) { A.push_back(B.back()); B.pop_back(); } B.push_back(i); } else { A.push_back(i); know = 1; } } if (!are_connected(A,B)) { if (A.size() > B.size()) { return A; } else { return B; } } vector <int> X, Y; X.push_back(A.back()); Y.push_back(B.back()); if (A.size() > 1) { X.push_back(A[0]); } if (B.size() > 1) { Y.push_back(B[0]); } if (are_connected(X,Y)) { if (are_connected({A.back()},{B.back()})) { while (!B.empty()) { A.push_back(B.back()); B.pop_back(); } return A; } if (are_connected({A.back()},{B[0]})) { for (int x : B) { A.push_back(x); } return A; } if (are_connected({A[0]},{B.back()})) { for (int x : A) { B.push_back(x); } return B; } reverse(A.begin(),A.end()); for (int x : B) { A.push_back(x); } return A; } int L=0, R=A.size()-1; while (L < R) { int mid = (L+R)/2; vector <int> C; for (int i=L;i<=mid;i++) { C.push_back(A[i]); } if (are_connected(B,C)) { R = mid; } else { L = mid+1; } } vector <int> C; for (int i=L+1;i<A.size();i++) { C.push_back(A[i]); } for (int i=0;i<=L;i++) { C.push_back(A[i]); } L=0, R=B.size()-1; while (L < R) { int mid = (L+R)/2; vector <int> D; for (int i=L;i<=mid;i++) { D.push_back(B[i]); } if (are_connected({C.back()},D)) { R = mid; } else { L = mid+1; } } for (int i=L;i<B.size();i++) { C.push_back(B[i]); } for (int i=0;i<L;i++) { C.push_back(B[i]); } return C; }
#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...