Submission #840520

#TimeUsernameProblemLanguageResultExecution timeMemory
840520arbuzickLongest Trip (IOI23_longesttrip)C++17
40 / 100
892 ms512 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; } } // 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:98:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   98 |         if (ans.size() * 2 < n) {
      |             ~~~~~~~~~~~~~~~^~~
longesttrip.cpp:108:1: warning: control reaches end of non-void function [-Wreturn-type]
  108 | }
      | ^
#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...