Submission #121119

#TimeUsernameProblemLanguageResultExecution timeMemory
121119WhipppedCreamRoller Coaster Railroad (IOI16_railroad)C++17
0 / 100
104 ms47644 KiB
#include "railroad.h"
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
using namespace std;
#define X first
#define Y second
#define pb push_back
typedef pair<int, int> ii;
typedef long long ll;

const int maxn = 18;

int dp[maxn][1<<maxn];

int n;

int s[maxn], t[maxn];

ll solve(int u, int bit)
{
	if(bit == (1<<n)-1) return 0;
	if(dp[u][bit] != -1) return dp[u][bit];
	ll best = 1e18;
	for(int i = 0; i< n; i++)
	{
		if(bit&(1<<i)) continue;
		best = min(best, (t[u]<= s[i]?0:t[u]-s[i])+solve(i, bit|(1<<i)));
	}
	return dp[u][bit] = best;
}

ll plan_roller_coaster(vector<int> S, vector<int> T)
{
	memset(dp, -1, sizeof dp);
	n = S.size();
	for(int i = 0; i< n; i++)
	{
		s[i] = S[i];
		t[i] = T[i];
	}
	ll best = 1e18;
	for(int i = 0; i< n; i++) best = min(best, solve(i, 1<<i));
	return best;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...