제출 #595091

#제출 시각아이디문제언어결과실행 시간메모리
595091LucppShortcut (IOI16_shortcut)C++17
23 / 100
2078 ms340 KiB
#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e18;

int n;
vector<ll> x, d;
ll c;

ll max_dist(int p, int a, int b){
    ll res = 0;
    for(int q = 0; q < n; q++){
        if(p == q) continue;
        int i = min(p, q), j = max(p, q);
        ll no = x[j]-x[i];
        ll use = abs(x[i]-x[a])+c+abs(x[j]-x[b]);
        ll dis = min(no, use)+d[i]+d[j];
        res = max(res, dis);
    }
    return res;
}

ll find_shortcut(int n_, vector<int> len, vector<int> d_, int c_) {
    n = n_;
    for(int i = 0; i < n; i++) d.push_back(d_[i]);
    c = c_;
    x.resize(n);
    x[0] = 0;
    for(int i = 0; i < n-1; i++) x[i+1] = x[i]+len[i];
    ll ans = INF;
    for(int a = 0; a < n; a++){
        for(int b = a+1; b < n; b++){
            ll dia = 0;
            for(int p = 0; p < n; p++){
                dia = max(dia, max_dist(p, a, b));
            }
            ans = min(ans, dia);
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...