#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;
// O(N^3) Solution [[38 pts]]
long long N, C, D[3009][3009], A[3009], B[3009], dp[3009];
long long BB[6009], L[6009], LL[6009], L2[6009];
long long solve_in(int cl, int cr) {
for (int i = cl; i < cr; i++) { L[i - cl] = A[i]; BB[i - cl] = B[i]; } L[cr - cl] = C; BB[cr - cl] = B[cr];
int M = (cr - cl + 1);
for (int i = 0; i <= M * 2; i++) LL[i + 1] = LL[i] + L[i % M];
for (int i = 0; i <= M * 2; i++) L2[i] = LL[i] + BB[i % M];
//printf("LL : "); for (int i = 0; i <= M * 2; i++) printf("% 4lld", LL[i]); printf("\n");
//printf("L2 : "); for (int i = 0; i <= M * 2; i++) printf("% 4lld", L2[i]); printf("\n");
long long maxn = 0; for (int i = cl; i <= cr; i++) maxn = max(maxn, B[i]);
int cx = 0; deque<pair<long long, int>> vec;
for (int i = 0; i < M; i++) {
while (LL[cx] - LL[i] <= (LL[M] / 2)) {
while (!vec.empty() && vec[vec.size() - 1].first <= L2[cx]) vec.pop_back();
vec.push_back(make_pair(L2[cx], cx));
cx++;
}
if (vec.front().second == i) vec.pop_front();
if (!vec.empty()) {
//printf("i = %d, cx = %d, right = %d, left = %d\n", i, cx, (int)vec.front().first, (int)(LL[i] - BB[i]));
maxn = max(maxn, vec.front().first - (LL[i] - BB[i]));
}
}
return maxn;
}
long long solve_out(int cl, int cr) {
long long el = 0, er = 0;
long long sl = 0; for (int i = cl - 1; i >= 0; i--) { sl += A[i]; el = max(el, sl + B[i]); }
long long sr = 0; for (int i = cr; i < N - 1; i++) { sr += A[i]; er = max(er, sr + B[i + 1]); }
long long maxn = 0;
for (int i = cl; i <= cr; i++) {
maxn = max(maxn, el + B[i] + min(D[cl][i], D[cl][cr] + C - D[cl][i]));
maxn = max(maxn, er + B[i] + min(D[cr][i], D[cl][cr] + C - D[cr][i]));
}
maxn = max(maxn, el + er + C);
return maxn;
}
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c) {
N = n; C = c;
for (int i = 0; i < N; i++) { if (i < N - 1) A[i] = l[i]; B[i] = d[i]; }
for (int i = 0; i < N; i++) {
long long S = 0;
for (int j = i + 1; j < N; j++) {
S += 1LL * l[j - 1];
D[i][j] = S; D[j][i] = S;
}
}
long long ans = (1LL << 60);
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
long long V1 = solve_in(i, j);
long long V2 = solve_out(i, j);
//cout << "u = " << i << ", v = " << j << ", V1 = " << V1 << ", V2 = " << V2 << ", ans = " << max(V1, V2) << endl;
ans = min(ans, max(V1, V2));
}
}
return ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
2 ms |
384 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
2 ms |
384 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
2 ms |
256 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
2 ms |
384 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
2 ms |
384 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
2 ms |
384 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
2 ms |
380 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
2 ms |
384 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
2 ms |
256 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
2 ms |
384 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
2 ms |
384 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
2 ms |
384 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
2 ms |
384 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
2 ms |
384 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
2 ms |
384 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
2 ms |
384 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
2 ms |
384 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
2 ms |
384 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
2 ms |
384 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
2 ms |
384 KB |
n = 10, incorrect answer: jury 117 vs contestant 110 |
24 |
Halted |
0 ms |
0 KB |
- |