This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define pll pair<long long, long long>
#define pii pair<int, int>
#include "shortcut.h"
using namespace std;
const ll INF = 1e18;
ll case123(int n, vector <int> l1, vector <int> d1, int c1) {
ll ans = INF, c = 1ll * c1;
vector <ll> p(n), d(n), l(n);
for (int i = 0; i < n; i++)
d[i] = d1[i] * 1ll;
for (int i = 0; i < n; i++)
l[i] = l1[i] * 1ll;
p[0] = 0;
for (int i = 1; i < n; i++)
p[i] = p[i - 1] + l[i - 1];
ll maxdist = 0;
for (int k = 0; k < n - 1; k++)
for (int t = k + 1; t < n; t++) {
ll mind;
mind = p[t] - p[k];
maxdist = max(maxdist, mind + d[k] + d[t]);
}
ans = maxdist;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
ll maxdist = 0;
if (c >= p[j] - p[i])
continue;
for (int k = 0; k < n - 1; k++)
for (int t = k + 1; t < n; t++) {
ll mind;
mind = p[t] - p[k];
mind = min(mind, p[max(k, i)] - p[min(k, i)] + c + p[max(t, j)] - p[min(t, j)]);
maxdist = max(maxdist, mind + d[k] + d[t]);
// if (i == 1 && j == 3)
// cout << "AF s" << k << " " << t << " " << mind + d[k] + d[t] << endl;
}
// if (i == 1 && j == 3)
// cout << "AF s" << maxdist << endl;
ans = min(ans, maxdist);
}
}
return ans;
}
ll find_shortcut(int n, vector <int> l, vector <int> d, int c) {
if (n <= 250)
return case123(n, l, d, c);
return 0ll;
}
# | 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... |
# | 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... |