제출 #1363659

#제출 시각아이디문제언어결과실행 시간메모리
1363659coderg300711가장 긴 여행 (IOI23_longesttrip)C++20
40 / 100
5 ms424 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "longesttrip.h"

V<int> longest_trip(int n,int d){
	V<int> p1,p2;
	p1.pb(0);
	F(i,1,n){
		if(p2.empty()){
			if(are_connected({p1.back()},{i}))p1.pb(i);
			else p2.pb(i);
		}else{
			if(are_connected({p1.back()},{i}))p1.pb(i);
			else if(are_connected({p2.back()},{i}))p2.pb(i);
			else{
				p1.insert(p1.end(),p2.rbegin(),p2.rend());
				p2.clear();
				p2.pb(i);
			}
		}
	}
	if(p2.empty())return p1;
	if(are_connected({p1.back()},{p2.ft})){
		p1.insert(p1.end(),p2.begin(),p2.end());
		return p1;
	}
	if(are_connected({p1.back()},{p2.back()})){
		p1.insert(p1.end(),p2.rbegin(),p2.rend());
		return p1;
	}
	if(are_connected({p1.ft},{p2.ft})){
		V<int> merged;
		merged.insert(merged.end(),p1.rbegin(),p1.rend());
		merged.insert(merged.end(),p2.begin(),p2.end());
		return merged;
	}
	if(are_connected({p1.ft},{p2.back()})){
		p2.insert(p2.end(),p1.begin(),p1.end());
		return p2;
	}
	if(sz(p1)>=sz(p2))return p1;
	return p2;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…