Submission #1081816

#TimeUsernameProblemLanguageResultExecution timeMemory
1081816ArthuroWichLongest Trip (IOI23_longesttrip)C++17
70 / 100
24 ms600 KiB
#include "longesttrip.h" #include<bits/stdc++.h> using namespace std; vector<int> longest_trip(int n, int d) { vector<int> a, b, ans, st; a = {0}; b = {1}; srand(time(NULL)); for (int i = 2; i < n; i++) { st.push_back(i); } random_shuffle(st.begin(), st.end()); for (int i : st) { if (are_connected({a.back(), b.back()}, {i})) { if (are_connected({a.back()}, {i})) { a.push_back(i); } else { b.push_back(i); } } else { for (int j = b.size()-1; j >= 0; j--) { a.push_back(b[j]); } b = {i}; } } if (are_connected(a, b)) { vector<int> ch1 = {a.front(), a.back()}, ch2 = {b.front(), b.back()}; sort(ch1.begin(), ch1.end()); ch1.erase(unique(ch1.begin(), ch1.end()), ch1.end()); sort(ch2.begin(), ch2.end()); ch2.erase(unique(ch2.begin(), ch2.end()), ch2.end()); if (!are_connected(ch1, ch2)) { // both become cycles that are connected via some edge? int e1, e2; for (int i : a) { if (are_connected({i}, b)) { e1 = i; break; } } for (int i : b) { if (are_connected({e1}, {i})) { e2 = i; } } vector<int> ans; for (int i = find(a.begin(), a.end(), e1) - a.begin()+1; i < a.size(); i++) { ans.push_back(a[i]); } for (int i = 0; i <= find(a.begin(), a.end(), e1) - a.begin(); i++) { ans.push_back(a[i]); } for (int i = find(b.begin(), b.end(), e2) - b.begin(); i < b.size(); i++) { ans.push_back(b[i]); } for (int i = 0; i < find(b.begin(), b.end(), e2) - b.begin(); i++) { ans.push_back(b[i]); } a = ans; b.clear(); } else if (are_connected({a.front()}, {b.front()})) { reverse(a.begin(), a.end()); for (int j = 0; j < b.size(); j++) { a.push_back(b[j]); } reverse(a.begin(), a.end()); b.clear(); } else if (are_connected({a.back()}, {b.front()})) { for (int j = 0; j < b.size(); j++) { a.push_back(b[j]); } b.clear(); } else if (are_connected({a.front()}, {b.back()})) { reverse(a.begin(), a.end()); for (int j = b.size()-1; j >= 0; j--) { a.push_back(b[j]); } reverse(a.begin(), a.end()); b.clear(); } else { for (int j = b.size()-1; j >= 0; j--) { a.push_back(b[j]); } b.clear(); } } if (a.size() >= b.size()) { ans = a; } else { ans = b; } return ans; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:48:72: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |             for (int i = find(a.begin(), a.end(), e1) - a.begin()+1; i < a.size(); i++) {
      |                                                                      ~~^~~~~~~~~~
longesttrip.cpp:54:70: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             for (int i = find(b.begin(), b.end(), e2) - b.begin(); i < b.size(); i++) {
      |                                                                    ~~^~~~~~~~~~
longesttrip.cpp:64:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |             for (int j = 0; j < b.size(); j++) {
      |                             ~~^~~~~~~~~~
longesttrip.cpp:70:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |             for (int j = 0; j < b.size(); j++) {
      |                             ~~^~~~~~~~~~
#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...