#include "shortcut.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
const int maxn = 5e2 + 20;
ll s[maxn] , pf[maxn] , sf[maxn] , mxp[maxn] , mxs[maxn];
int d[maxn];
ll mx[maxn][maxn][2];
ll fn(int a , int b)
{
if(a > b)
swap(a , b);
return s[b] - s[a];
}
long long find_shortcut(int n, std::vector<int> L, std::vector<int> D, int c)
{
for(int i = 0; i < n; i++)
{
d[i] = D[i];
if(i)
s[i] = L[i - 1] + s[i - 1];
}
memset(pf , -63 , sizeof pf);
memset(sf , -63 , sizeof sf);
memset(mxp , -63 , sizeof mxp);
memset(mxs , -63 , sizeof mxs);
for(int i = 0; i < n; i++)
{
if(i)
{
pf[i] = pf[i - 1];
mxp[i] = mxp[i - 1];
pf[i] = max(pf[i - 1] , mxp[i - 1] + d[i] + s[i]);
}
mxp[i] = max(mxp[i] , d[i] - s[i]);
}
for(int i = n - 1; i >= 0; i--)
{
sf[i] = max(sf[i + 1] , d[i] - s[i] + mxs[i + 1]);
mxs[i] = max(mxs[i + 1] , d[i] + s[i]);
}
memset(mx , -63 , sizeof mx);
for(int i = 0; i < n; i++)
for(int j = i + 1; j < n; j++)
{
mx[i][j][0] = max(mx[i][j - 1][0] , d[i] - s[i]);
mx[i][j][1] = max(mx[i][j - 1][1] , d[i] + s[i]);
}
ll ans = pf[n - 1];
for(int l = 0; l < n; l++)
for(int r = l + 1; r < n; r++)
{
if(c > s[r] - s[l])
continue;
ll res = max(pf[l] , sf[r]);
res = max(res , mxp[l] + mxs[r] + c - (s[r] - s[l]));
int pt = l + 1;
for(int v = l + 1; v < r; v++)
{
ll dis1 = min(s[v] - s[l] , s[r] - s[v] + c) + mxp[l] + s[l] + d[v];
ll dis2 = min(s[r] - s[v] , s[v] - s[l] + c) + mxs[r] - s[r] + d[v];
res = max(res , max(dis1 , dis2));
while(pt < v && s[v] - s[pt] >= s[r] - s[v] + c + s[pt] - s[l])
pt++;
res = max(res , s[v] + mx[pt][v][0] + d[v]);
res = max(res , d[v] + s[r] - s[v] + c - s[l] + mx[l][pt][1]);
}
ans = min(ans , res);
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
4600 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
5 ms |
4600 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
5 ms |
4600 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
5 ms |
4600 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
5 ms |
4572 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
5 ms |
4600 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
5 ms |
4600 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
5 ms |
4600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
5 ms |
4600 KB |
n = 2, 3000000000 is a correct answer |
12 |
Incorrect |
5 ms |
4600 KB |
n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001 |
13 |
Halted |
0 ms |
0 KB |
- |