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 namespace std;
const int N = 2e5 + 7;
const int M = (1 << 16) + 7;
const long long inf = 1e18 + 7;
pair<long long, bool> dp[M][19];
int n;
pair<int, int> p[N];
long long solve(int state, int pr = 17){
if(dp[state][pr].second){
return dp[state][pr].first;
}
if(state == (1 << n) - 1){
return 0;
}
dp[state][pr].second = true;
dp[state][pr].first = inf;
long long curr;
if(pr == 17){
curr = 1;
}
else{
curr = p[pr].second;
}
for(int i = 0; i < n; i++){
if((1 << i) & state){
continue;
}
dp[state][pr].first = min(dp[state][pr].first, solve(state | (1 << i), p[i].second) + max(curr - p[i].first, 0ll));
}
return dp[state][pr].first;
}
long long plan_roller_coaster(vector<int> s, vector<int> t){
n = (int)s.size();
for(int i = 0; i < n; i++){
p[i] = {s[i], t[i]};
}
return solve(0);
}
# | 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... |