Submission #900606

#TimeUsernameProblemLanguageResultExecution timeMemory
900606abcvuitunggioLongest Trip (IOI23_longesttrip)C++17
100 / 100
11 ms952 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; vector <int> longest_trip(int N, int D){ vector <int> a={0},b={1}; int ch=0; for (int i=2;i<N;i++){ if (are_connected({a.back()},{i})){ a.push_back(i); ch=0; continue; } if (ch||are_connected({b.back()},{i})){ b.push_back(i); ch=1; continue; } reverse(b.begin(),b.end()); for (int i:b) a.push_back(i); b={i}; } if (a.size()<b.size()) swap(a,b); if (!are_connected(a,b)) return a; vector <int> x={0,a.size()-1},y={0,b.size()-1}; for (int i:x) for (int j:y) if (are_connected({a[i]},{b[j]})){ if (!i) reverse(a.begin(),a.end()); if (j) reverse(b.begin(),b.end()); for (int k:b) a.push_back(k); return a; } int l=0,r=b.size()-1,i=-1; while (l<=r){ int mid=(l+r)>>1; vector <int> tmp; for (int i=0;i<=mid;i++) tmp.push_back(b[i]); if (are_connected(a,tmp)){ i=mid; r=mid-1; } else l=mid+1; } l=0,r=a.size()-1; int j=-1; while (l<=r){ int mid=(l+r)>>1; vector <int> tmp; for (int i=0;i<=mid;i++) tmp.push_back(a[i]); if (are_connected(tmp,{b[i]})){ j=mid; r=mid-1; } else l=mid+1; } vector <int> c; for (int k=(j+1)%a.size();c.size()<a.size();k=(k+1)%a.size()) c.push_back(a[k]); for (int k=i;c.size()<a.size()+b.size();k=(k+1)%b.size()) c.push_back(b[k]); return c; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:27:31: warning: narrowing conversion of '(a.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   27 |     vector <int> x={0,a.size()-1},y={0,b.size()-1};
      |                       ~~~~~~~~^~
longesttrip.cpp:27:31: warning: narrowing conversion of '(a.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
longesttrip.cpp:27:48: warning: narrowing conversion of '(b.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   27 |     vector <int> x={0,a.size()-1},y={0,b.size()-1};
      |                                        ~~~~~~~~^~
longesttrip.cpp:27:48: warning: narrowing conversion of '(b.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
#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...