Submission #980599

#TimeUsernameProblemLanguageResultExecution timeMemory
980599oleh1421Longest Trip (IOI23_longesttrip)C++17
5 / 100
7 ms500 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; std::vector<int> longest_trip(int N, int D) { vector<int>A={0},B; for (int i=1;i<N;i++){ if (are_connected({A.back()},{i})){ A.push_back(i); } else { if (B.empty() || are_connected({B.back()},{i})){ B.push_back(i); } else { reverse(B.begin(),B.end()); for (auto i:B) A.push_back(i); B={i}; } } } if (B.empty()) return A; if (are_connected({A[0],A.back()},{B[0],B.back()})){ if (are_connected({A[0]},{B[0],B.back()})){ if (are_connected({A[0]},{B[0]})){ reverse(B.begin(),B.end()); for (auto i:A){ B.push_back(i); } return B; } else { for (auto i:A){ B.push_back(i); } return B; } } else { if (are_connected({A.back()},{B[0]})){ for (auto i:B){ A.push_back(i); } return A; } else { reverse(B.begin(),B.end()); for (auto i:B){ A.push_back(i); } return A; } } } if (!are_connected(A,B)){ if (A.size()>B.size()) return A; else return B; } vector<int>rem,A0,B0; { int pos=0; for (int i=8;i>=0;i--){ pos+=(1<<i); if (pos>=A.size()){ pos-=(1<<i); continue; } vector<int>C; for (int j=0;j<pos;j++) C.push_back(A[j]); if (are_connected(C,B)){ pos-=(1<<i); } } rem=A; A={A[pos]}; swap(A,B); } A0=rem; { int pos=0; for (int i=8;i>=0;i--){ pos+=(1<<i); if (pos>=A.size()){ pos-=(1<<i); continue; } vector<int>C; for (int j=0;j<pos;j++) C.push_back(A[j]); if (are_connected(C,B)){ pos-=(1<<i); } } rem=A; A={A[pos]}; swap(A,B); } B0=rem; vector<int>ans; for (auto i:A0){ if (i==A[0]) continue; ans.push_back(i); } ans.push_back(A[0]); ans.push_back(B[0]); for (auto i:B0){ if (i==B[0]) continue; ans.push_back(i); } return ans; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:59:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |             if (pos>=A.size()){
      |                 ~~~^~~~~~~~~~
longesttrip.cpp:78:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |             if (pos>=A.size()){
      |                 ~~~^~~~~~~~~~
#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...