제출 #1059689

#제출 시각아이디문제언어결과실행 시간메모리
1059689Huseyn123가장 긴 여행 (IOI23_longesttrip)C++17
40 / 100
10 ms600 KiB
#include "longesttrip.h"
#include <bits/stdc++.h> 
using namespace std; 
vector<int> longest_trip(int N, int D){ 
    vector<int> res;
    if(D==3){ 
        for(int i=0;i<N;i++){
            res.push_back(i);
        }
    }
    else if(D==2){
        set<int> c;
        for(int i=1;i<N;i++){
            c.insert(i);
        }
        res.push_back(0);
        for(int i=0;i<N-1;i++){
            auto it=c.begin();
            if(are_connected({res.back()},{*it})){
                res.push_back(*it);
            }
            else{
                ++it; 
                if(it==c.end()){
                    reverse(res.begin(),res.end());
                    --it; 
                    res.push_back(*it);
                }
                else{
                    res.push_back(*it);
                }
            }
            c.erase(*it);
        }
    }
    else{ 
        vector<int> a,b;
        a.push_back(0); 
        b.push_back(1);
        for(int i=2;i<N;i++){
            if(are_connected({a.back()},{i})){
                a.push_back(i);
            }
            else if(are_connected({b.back()},{i})){
                b.push_back(i);
            }
            else{
                reverse(b.begin(),b.end()); 
                for(auto x:b){
                    a.push_back(x);
                }
                b.clear();
                b.push_back(i);
            }
        }
        if((int)a.size()>(int)b.size()){
            res=a;
        }
        else{
            res=b;
        }
    }
    return res;
}
#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...