#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 20;
long long len[maxn];
int depth[maxn];
int n, c;
bool check(long long lim) {
for (int x = 1; x <= n; x++) {
for (int y = x + 1; y <= n; y++) {
bool ok = true;
for (int i = 1; i <= n && ok; i++) {
for (int j = i + 1; j <= x && ok; j++) {
if (len[j] - len[i] + depth[i] + depth[j] > lim) {
ok = false;
break;
}
}
}
for (int i = y; i <= n && ok; i++) {
for (int j = i + 1; j <= n && ok; j++) {
if (len[j] - len[i] + depth[i] + depth[j] > lim) {
ok = false;
break;
}
}
}
for (int i = 1; i <= x && ok; i++) {
for (int j = x + 1; j <= y && ok; j++) {
long long d1 = len[y] - len[x] + c - (len[j] - len[x]) + len[x] - len[i] + depth[i] + depth[j];
long long d2 = len[j] - len[i] + depth[i] + depth[j];
if (d1 > lim && d2 > lim) {
ok = false;
break;
}
}
}
for (int i = x; i <= y - 1 && ok; i++) {
for (int j = y; j <= n && ok; j++) {
long long d1 = len[y] - len[x] + c - (len[y] - len[i]) + len[j] - len[y] + depth[i] + depth[j];
long long d2 = len[j] - len[i] + depth[i] + depth[j];
if (d1 > lim && d2 > lim) {
ok = false;
break;
}
}
}
for (int i = x; i <= y && ok; i++) {
for (int j = i + 1; j <= y && ok; j++) {
long long d1 = len[y] - len[x] + c - (len[j] - len[i]) + depth[i] + depth[j];
long long d2 = len[j] - len[i] + depth[i] + depth[j];
if (d1 > lim && d2 > lim) {
ok = false;
break;
}
}
}
if (ok) {
return true;
}
}
}
return false;
}
long long find_shortcut(int _n, vector<int> _len, vector<int> _depth, int _c) {
n = _n;
c = _c;
len[1] = 0;
for (int i = 2; i <= n; i++) {
len[i] = len[i - 1] + _len[i - 2];
}
for (int i = 1; i <= n; i++) {
depth[i] = _depth[i - 1];
}
long long res = -1;
long long lt = 0;
long long rt = 1e18L;
while (lt <= rt) {
long long mt = (lt + rt) / 2;
if (check(mt)) {
res = mt;
rt = mt - 1;
}
else {
lt = mt + 1;
}
}
return res;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
308 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
1 ms |
212 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |