Submission #1009708

#TimeUsernameProblemLanguageResultExecution timeMemory
1009708aaaaaarrozRoller Coaster Railroad (IOI16_railroad)C++17
34 / 100
35 ms10840 KiB
#include "railroad.h"
 
#include <bits/stdc++.h>
using namespace std;
 
long long plan_roller_coaster(vector<int> s, vector<int> t) {
  int n = (int)s.size();
  // dp[i][j]: ends at i, visits j
  vector<vector<int64_t>> dp(n, vector<int64_t>(1 << n, INT64_MAX));
  for (int i = 0; i < n; ++i) dp[i][1 << i] = 0;
  for (int visit = 1; visit < (1 << n); ++visit) {
    for (int cur = 0; cur < n; ++cur) {
      if ((visit & (1 << cur)) == 0) continue;
      for (int next = 0; next < n; ++next) {
        if (visit & (1 << next)) continue;
        // dp[cur][visit] -> dp[next][visit | (1 << next)]
        dp[next][visit | (1 << next)] =
            min(dp[next][visit | (1 << next)],
                dp[cur][visit] + max(t[cur] - s[next], 0));
      }
    }
  }
  int64_t minimum = INT64_MAX;
  for (int last = 0; last < n; ++last)
    minimum = min(minimum, dp[last][(1 << n) - 1]);
  return minimum;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...