This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using i64 = long long;
template <typename T> using Vec = std::vector<T>;
constexpr i64 inf64 = 2000000000000000000;
template <typename T> bool setmin(T &a, const T v) {
if (a > v) {
a = v;
return true;
}
return false;
}
long long plan_roller_coaster(std::vector<int> S, std::vector<int> T) {
const int N = (int)S.size();
Vec<Vec<i64>> dp(1 << N, Vec<i64>(N, inf64));
for (int i = 0; i < N; ++i) dp[1 << i][i] = 0;
for (int bit = 0; bit < (1 << N); ++bit) {
for (int last = 0; last < N; ++last) {
if (not(bit & (1 << last))) continue;
for (int next = 0; next < N; ++next) {
if (bit & (1 << next)) continue;
setmin(dp[bit | (1 << next)][next], dp[bit][last] + std::max(0, T[last] - S[next]));
}
}
}
i64 answer = inf64;
for (int i = 0; i < N; ++i) setmin(answer, dp[(1 << N) - 1][i]);
return (long long)answer;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |