제출 #1339385

#제출 시각아이디문제언어결과실행 시간메모리
1339385tsetsenbilegRoller Coaster Railroad (IOI16_railroad)C++20
34 / 100
27 ms11076 KiB
#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
using ll = long long;
using ld = long double;
using pr = pair<int, int>;
const int MOD = 1e9+7, MAXA = 1e6;
const ll INF = 1e18;

long long plan_roller_coaster(vector<int> s, vector<int> e) {
    int n = (int) s.size();
    vector<vector<ll>> dp((1 << n), vector<ll>(n, INF));
    for (int i = 0; i < (1<<n); i++) {
        vector<int> c;
        for (int j = 0; j < n; j++) {
            if (i & (1 << j)) c.pb(j);
        }
        if (c.size() == 1) dp[i][c[0]] = 0;
        for (auto l : c) {
            int cur = i ^ (1 << l);
            for (auto r : c) {
                if (l == r) continue;
                ll cost = (e[r] > s[l]) ? e[r] - s[l] : 0;
                dp[i][l] = min(dp[i][l], dp[cur][r] + cost);
            }
        }
    }
    return *min_element(dp[(1<<n)-1].begin(), dp[(1<<n)-1].end());
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...