Submission #1081090

#TimeUsernameProblemLanguageResultExecution timeMemory
1081090KiprasLongest Trip (IOI23_longesttrip)C++17
15 / 100
8 ms600 KiB
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

#include "longesttrip.h"

bool are_connected(vector<int> a, vector<int> b);

vector<int> longest_trip(int N, int D){
    if(D==3) {
        vector<int> a;
        for(int i = 0; i < N; i++)a.push_back(i);
        return a;
    }else if(D==2) {
        deque<int> q;
        if(!are_connected({0}, {1})) {
            q.push_back(0);
            q.push_back(2);
            q.push_back(1);
        }
        else if(!are_connected({0}, {2})) {
            q.push_back(0);
            q.push_back(1);
            q.push_back(2);
        }
        else {
            q.push_back(1);
            q.push_back(0);
            q.push_back(2);
        }

        for(int i = 3; i < N; i++) {
            if(are_connected({q.front()}, {i}))
                q.push_front(i);
            else
                q.push_back(i);
        }

        vector<int> a;
        for(int i = 0; i < N; i++) {
            a.push_back(q.front());
            q.pop_front();
        }
        return a;

    }
    vector<int> a, b, c;
    a.push_back(0);
    b.push_back(1);
    for(int i = 2; i < N; i++) {
        if(b.size()>a.size())swap(a, b);
        c.push_back(i);
        if(are_connected({a.back()}, {c.back()})) {
            a.push_back(c.back());
            c.clear();
        }else if(are_connected({b.back()}, {c.back()})) {
            b.push_back(c.back());
            c.clear();
        }else{
            for(auto i : b) {
                a.push_back(i);
            }
            b.clear();
            b.push_back(c.back());
            c.clear();
        }
    }
    if(b.size()>a.size())swap(a, b);
    return a;
}
#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...