#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p[200009];
ll dist[1009][1009];
const ll INF = 0x3fffffffffffffffll;
long long find_shortcut2(int n, std::vector<int> L, std::vector<int> d, int c)
{
int i, j, k, l;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
dist[i][j] = INF;
if(i==j)
dist[i][j] = 0;
}
}
for(i=0; i<n-1; i++){
dist[i][i+1] = dist[i+1][i] = L[i];
}
for(k=0; k<n; k++){
for(i=0; i<n; i++){
for(j=0; j<n; j++){
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}
}
}
ll ans = INF;
for(k=0; k<n; k++){
for(l=k+1; l<n; l++){
ll cur = 0;
for(i=0; i<n; i++){
for(j=i+1; j<n; j++){
cur = max(cur, min(dist[i][j], min(dist[i][k] + dist[l][j] + c, dist[i][l] + dist[j][k] + c)) + d[i]+d[j]);
}
}
if(cur < 200000)
printf("k=%d l=%d\n", k, l);
ans = min(ans, cur);
}
}
return ans;
}
long long find_shortcut(int n, std::vector<int> L, std::vector<int> d, int c)
{
int i, j, k, l;
for(i=0; i<n-1; i++){
p[i+1] = p[i] + L[i];
}
ll ans = INF, org = 0;
for(i=0; i<n; i++){
for(j=i+1; j<n; j++){
org = max(org, p[j]+d[j] - p[i]+d[i]);
}
}
ans = org;
for(k=0; k<n; k++){
for(l=k+1; l<n; l++){
ll cur = 0;
int j = k;
ll mx = p[k] + d[k];
for(i=k; i<=l; i++){
while(j<l && p[j+1]-p[i] < c + p[l]+p[i]-p[k]-p[j+1]){
j++;
mx = max(mx, p[j] + d[j]);
}
if(j<=i)
continue;
// printf("i=%d j=%d mx=%lld p[i]=%d d[i]=%d\n", i, j, mx, p[i], d[i]);
cur = max(cur, mx - p[i] + d[i]);
}
j = l+1;
mx = -INF;
for(i=l; i>=k; i--){
while(j>k && p[j-1]-p[i] >= c + p[l]+p[i]-p[k]-p[j-1]){
j--;
mx = max(mx, d[j] - p[j]);
}
if(j<=i)
continue;
// printf("i=%d j=%d\n", i, j);
cur = max(cur, c + p[l] + p[i] + d[i] - p[k] + mx);
}
//printf("cur=%lld\n", cur);
mx = -INF;
for(i=0; i<k; i++){
mx = max(mx, d[i] - p[i]);
}
for(j=k; j<=l; j++){
cur = max(cur,mx + d[j] + min(p[j], c + p[l] + p[k] - p[j]));
}
ll mx2 = -INF;
for(j=l+1; j<n; j++){
mx2 = max(mx2, d[j] + p[j]);
}
for(i=k; i<=l; i++){
cur = max(cur, mx2+d[i] + min(-p[i], -p[l]-p[k]+p[i]+c));
}
mx = max(mx, d[k]-p[k]);
mx2 = max(mx2, d[l]+p[l]);
cur = max(cur, mx + mx2 - p[l] + p[k] + c);
for(i=0; i<=k; i++)
cur = max(cur, p[i] + d[i]);
for(i=n-1; i>=l; i--)
cur = max(cur, p[n-1] - p[i] + d[i]);
//printf("k=%d l=%d cur=%lld\n", k, l, cur);
ans = min(ans, cur);
}
}
// long long t2 = find_shortcut2(n, L, d, c);
// printf("t2=%lld\n", t2);
return ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
348 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
348 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
348 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
348 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
348 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
1 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
0 ms |
348 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
348 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
1 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
348 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
348 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
348 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
1 ms |
600 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
1 ms |
348 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
1 ms |
344 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
1 ms |
348 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
0 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
1 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Incorrect |
0 ms |
348 KB |
n = 10, incorrect answer: jury 117 vs contestant 111 |
24 |
Halted |
0 ms |
0 KB |
- |