제출 #931477

#제출 시각아이디문제언어결과실행 시간메모리
931477mariaclaraRoller Coaster Railroad (IOI16_railroad)C++17
34 / 100
43 ms27416 KiB
#include "railroad.h"
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
const int MAXN = 1e6+5;
#define all(x) x.begin(), x.end()
#define mk make_pair
#define pb push_back
#define fr first
#define sc second

ll dp[20][(1<<16)+5];
ll plan_roller_coaster(vector<int> s, vector<int> t) {
    int n = (int)s.size();

    for(int mask = 1; mask < (1<<n); mask++)
        for(int j = 0; j < n; j++)
            dp[j][mask] = 1e18;

    for(int i = 0; i < n; i++)
        dp[i][(1<<i)] = 0;

    for(int mask = 1; mask < (1<<n); mask++) {
        for(int j = 0; j < n; j++) {
            if(((1 << j) & mask) == 0) continue;
            
            for(int i = 0; i < n; i++) {
                if((1 << i) & mask) continue;
                dp[i][mask + (1 << i)] = min(dp[i][mask + (1 << i)], dp[j][mask] + max(t[j]-s[i], 0));
            }
        }
    }

    ll resp = 1e18;

    for(int i = 0; i < n; i++)
        resp = min(resp, dp[i][(1<<n) - 1]);

    return resp;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...