Submission #900605

#TimeUsernameProblemLanguageResultExecution timeMemory
900605abcvuitunggioLongest Trip (IOI23_longesttrip)C++17
100 / 100
10 ms1012 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; vector <int> longest_trip(int N, int D){ vector <int> a,b; int idx[N]; iota(idx,idx+N,0); //shuffle(idx,idx+N,default_random_engine(chrono::steady_clock::now().time_since_epoch().count())); a.push_back(idx[0]); b.push_back(idx[1]); int ch=0; for (int j=2;j<N;j++){ int i=idx[j]; 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:33:31: warning: narrowing conversion of '(a.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   33 |     vector <int> x={0,a.size()-1},y={0,b.size()-1};
      |                       ~~~~~~~~^~
longesttrip.cpp:33: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:33:48: warning: narrowing conversion of '(b.std::vector<int>::size() - 1)' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   33 |     vector <int> x={0,a.size()-1},y={0,b.size()-1};
      |                                        ~~~~~~~~^~
longesttrip.cpp:33: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...