Submission #840517

#TimeUsernameProblemLanguageResultExecution timeMemory
840517arbuzick가장 긴 여행 (IOI23_longesttrip)C++17
40 / 100
848 ms588 KiB
#include <bits/stdc++.h> #include "longesttrip.h" using namespace std; vector<int> longest_trip(int n, int d) { if (d == 3) { vector<int> ans(n); iota(ans.begin(), ans.end(), 0); return ans; } if (d == 2) { vector<int> ans = {0}; vector<int> used(n); used[0] = 1; while (ans.size() < n) { int nxt = -1; for (int i = 0; i < n; ++i) { if (!used[i] && are_connected({ans.back()}, {i})) { nxt = i; used[i] = 1; break; } } if (nxt == -1) { reverse(ans.begin(), ans.end()); for (int i = 0; i < n; ++i) { if (!used[i] && are_connected({ans.back()}, {i})) { nxt = i; used[i] = 1; break; } } } ans.push_back(nxt); } return ans; } if (d == 1) { vector<vector<int>> g(n, vector<int>(n)); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { if (are_connected({i}, {j})) { g[i][j] = g[j][i] = 1; } } } vector<int> ans = {0}; vector<int> used(n); used[0] = 1; // auto try_to_add = [&]() { // int nxt = -1; // for (int i = 0; i < n; ++i) { // if (!used[i] && g[ans.back()][i]) { // nxt = i; // used[i] = 1; // break; // } // } // if (nxt == -1) { // return false; // } // ans.push_back(nxt); // return true; // }; // while (true) { // if (!try_to_add()) { // break; // } // } while (true) { int nxt = -1; for (int i = 0; i < n; ++i) { if (!used[i] && g[ans.back()][i]) { nxt = i; used[i] = 1; break; } } if (nxt == -1) { break; } ans.push_back(nxt); } // if (ans.size() < n) { // reverse(ans.begin(), ans.end()); // if (try_to_add()) { // while (true) { // if (!try_to_add()) { // break; // } // } // } else { // for (int _ = 0; _ < (int)ans.size(); ++_) { // reverse(ans.begin(), ans.end()); // int vl = ans.back(); // ans.pop_back(); // reverse(ans.begin(), ans.end()); // ans.push_back(vl); // if (try_to_add()) { // while (true) { // if (!try_to_add()) { // break; // } // } // break; // } // } // } // } if (ans.size() * 2 < n) { ans.clear(); for (int i = 0; i < n; ++i) { if (!used[i]) { ans.push_back(i); } } } return ans; } }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:17:27: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   17 |         while (ans.size() < n) {
      |                ~~~~~~~~~~~^~~
longesttrip.cpp:112:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  112 |         if (ans.size() * 2 < n) {
      |             ~~~~~~~~~~~~~~~^~~
longesttrip.cpp:122:1: warning: control reaches end of non-void function [-Wreturn-type]
  122 | }
      | ^
#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...