제출 #787477

#제출 시각아이디문제언어결과실행 시간메모리
787477Sohsoh84Roller Coaster Railroad (IOI16_railroad)C++17
34 / 100
39 ms10580 KiB
#include "railroad.h"
#include <bits/stdc++.h>

typedef long long ll;

using namespace std;

#define all(x)		(x).begin(), (x).end()
#define debug(x)	cerr << #x << ": " << x << endl;
#define sep		' '

const ll MAXN = 1e6 + 10;
const ll INF = 1e18;

ll f[MAXN], n, m;
vector<ll> comp_vec;
ll dp[MAXN][20];

inline int ind(ll x) {
	return lower_bound(all(comp_vec), x) - comp_vec.begin() + 1;
}

ll plan_roller_coaster(vector<int> s, vector<int> t) {
	n = s.size();

	for (int mask = 1; mask < (1 << n); mask++) {
		vector<int> vec;
		for (int v = 0; v < n; v++)
			if (mask >> v & 1)
				vec.push_back(v);
	
		if (int(vec.size()) < 2) continue;

		for (int e : vec) {
			dp[mask][e] = INF;
			for (int e2 : vec) {
				if (e == e2) continue;
				dp[mask][e] = min(dp[mask][e], dp[mask ^ (1 << e)][e2] + max(0, t[e2] - s[e]));
			}
		}
	}

	ll ans = INF;
	for (int i = 0; i < n; i++)
		ans = min(ans, dp[(1 << n) - 1][i]);
	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...