Submission #1222948

#TimeUsernameProblemLanguageResultExecution timeMemory
1222948thelegendary08가장 긴 여행 (IOI23_longesttrip)C++17
0 / 100
0 ms416 KiB
#include "longesttrip.h" #include<bits/stdc++.h> #define int long long #define f0r(i,n) for(int i = 0;i<n;i++) #define FOR(i, k, n) for(int i = k;i<n;i++) #define pb push_back #define vi vector<signed> #define pii pair<int,int> #define mp make_pair #define vpii vector<pii> #define vvi vector<vi> #define vb vector<bool> using namespace std; const int mxn = 260; vvi adj(mxn); std::vector<signed> longest_trip(signed N, signed D) { vi c1; vi c2; c1.pb(0); c2.pb(1); int ptr = 2; while(ptr < N){ bool a1 = are_connected({c1.back()}, {ptr}); bool a2 = are_connected({c2.back()}, {ptr}); if(a1){ c1.pb(ptr); } else if(a2){ c2.pb(ptr); } else{ reverse(c2.begin(), c2.end()); for(auto u : c2){ c1.pb(u); } c2 = {ptr}; } ptr++; } bool g = are_connected(c1, c2); if(!g){ if(c1.size() < c2.size())swap(c1, c2); return c1; } bool a1 = are_connected({c1[0]}, {c2[0], c2.back()}); if(a1){ bool b1 = are_connected({c1[0]}, {c2[0]}); if(b1){ reverse(c1.begin(), c1.end()); for(auto u : c2)c1.pb(u); return c1; } else{ for(auto u : c1)c2.pb(u); return c2; } } bool a2 = are_connected({c1.back()}, {c2[0], c2.back()}); if(a2){ bool b2 = are_connected({c1.back()}, {c2[0]}); if(b2){ for(auto u : c2)c1.pb(u); return c1; } else{ reverse(c2.begin(), c2.end()); for(auto u : c2)c1.pb(u); return c1; } } int lo = 0; int hi = c1.size() - 1; while(lo < hi){ int mid = lo + (hi - lo) / 2; vi tmp; f0r(i, mid + 1){ tmp.pb(c1[i]); } bool h = are_connected(tmp, c2); if(h){ hi = mid; } else{ lo = mid + 1; } } int c1l = lo; lo = 0; hi = c2.size() - 1; while(lo < hi){ int mid = lo + (hi - lo) / 2; vi tmp; f0r(i, mid + 1){ tmp.pb(c2[i]); } bool h = are_connected(c1, tmp); if(h){ hi = mid; } else{ lo = mid + 1; } } int c2l = lo; vi ans; FOR(i, c1l + 1, c1.size()){ ans.pb(c1[i]); } f0r(i, c1l){ ans.pb(c1[i]); } FOR(i, c2l, c2.size()){ ans.pb(c2[i]); } f0r(i, c2l){ ans.pb(c2[i]); } return ans; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:22:55: warning: narrowing conversion of 'ptr' from 'long long int' to 'int' [-Wnarrowing]
   22 |                 bool a1 = are_connected({c1.back()}, {ptr});
      |                                                       ^~~
longesttrip.cpp:22:55: warning: narrowing conversion of 'ptr' from 'long long int' to 'int' [-Wnarrowing]
longesttrip.cpp:23:55: warning: narrowing conversion of 'ptr' from 'long long int' to 'int' [-Wnarrowing]
   23 |                 bool a2 = are_connected({c2.back()}, {ptr});
      |                                                       ^~~
longesttrip.cpp:23:55: warning: narrowing conversion of 'ptr' from 'long long int' to 'int' [-Wnarrowing]
longesttrip.cpp:35:31: warning: narrowing conversion of 'ptr' from 'long long int' to 'int' [-Wnarrowing]
   35 |                         c2 = {ptr};
      |                               ^~~
longesttrip.cpp:35:31: warning: narrowing conversion of 'ptr' from 'long long 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...