Submission #1217683

#TimeUsernameProblemLanguageResultExecution timeMemory
1217683VMaksimoski008Longest Trip (IOI23_longesttrip)C++17
5 / 100
4 ms408 KiB
#include "longesttrip.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> longest_trip(int n, int d) {
    vector<int> ans = { 0 };
    set<int> st;

    for(int i=1; i<n; i++) st.insert(i);

    while(st.size() >= 2) {
        int u = *st.begin(); st.erase(u);
        int v = *st.begin(); st.erase(v);
        if(are_connected({ ans.back() }, { u }))
            ans.push_back(u);
        else
            ans.push_back(v);
        if(ans.back() == u) st.insert(v);
        if(ans.back() == v) st.insert(u);
    }

    if(st.size() == 1) {
        int u = *st.begin();
        if(are_connected({ ans.back() }, { u })) {
            ans.push_back(u);
        } else if(are_connected({ 1 }, { u })) {
            vector<int> ans2 = { u };
            for(int x : ans) ans2.push_back(x);
            ans = ans2;
        } else {
            for(int i=0; i+1<ans.size(); i++) {
                if(are_connected({ ans[i] }, { u}) && are_connected({ u }, { ans[i+1] })) {
                    vector<int> ans2;
                    for(int j=0; j<=i; j++) ans2.push_back(ans[j]);
                    ans2.push_back(u);
                    for(int j=i+1; j<ans.size(); j++) ans2.push_back(ans[j]);
                    ans = ans2;
                }
            }
        }
    }

    return ans;
}
#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...