Submission #980608

#TimeUsernameProblemLanguageResultExecution timeMemory
980608oleh1421Longest Trip (IOI23_longesttrip)C++17
15 / 100
10 ms600 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; bool connected(vector<int>A,vector<int>B){ if (A.empty() || B.empty()) return false; sort(A.begin(),A.end()); sort(B.begin(),B.end()); A.erase(unique(A.begin(),A.end()),A.end()); B.erase(unique(B.begin(),B.end()),B.end()); return are_connected(A,B); } std::vector<int> longest_trip(int N, int D) { vector<int>A={0},B; for (int i=1;i<N;i++){ if (connected({A.back()},{i})){ A.push_back(i); } else { if (B.empty() || 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 (connected({A[0],A.back()},{B[0],B.back()})){ if (connected({A[0]},{B[0],B.back()})){ if (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 (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 (!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 (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 (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:67:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |             if (pos>=A.size()){
      |                 ~~~^~~~~~~~~~
longesttrip.cpp:86:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |             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...