#include "shortcut.h"
#include<bits/stdc++.h>
using namespace std;
int N;
long long t[508], ct, diam=0;
long long dst[508], calc[508];
long long pr[508];
long long pr_le[508], pr_ri[508];
void precalc()
{
for(int i=1; i<N; i++) pr[i]=pr[i-1]+dst[i];
for(int i=0; i<N; i++)
{
for(int j=0; j<=i; j++) if(pr[i]-pr[j]+t[j]>pr_le[i]) pr_le[i]=pr[i]-pr[j]+t[j];
for(int j=i; j<N; j++) if(pr[j]-pr[i]+t[j]>pr_ri[i]) pr_ri[i]=pr[j]-pr[i]+t[j];
}
}
long long find_diam(int le, int ri)
{
if(le>ri) swap(le, ri);
if(ct>pr[ri]-pr[le]) return diam;
swap(t[le], pr_le[le]);
swap(t[ri], pr_ri[ri]);
long long md=0, sum=pr[ri]-pr[le]+ct;
for(int i=le; i<=ri; i++)
{
for(int j=i+1; j<=ri; j++)
{
long long st1=pr[j]-pr[i]+t[j]+t[i], st2=sum-pr[j]+pr[i]+t[j]+t[i];
if(min(st1, st2)> md) md=min(st1, st2);
}
}
swap(t[le], pr_le[le]);
swap(t[ri], pr_ri[ri]);
for(int i=0; i<=le; i++)
{
for(int j=i+1; j<=le; j++) if(md<t[i]+t[j]+pr[j]-pr[i]) md=t[i]+t[j]+pr[j]-pr[i];
}
for(int i=ri; i<N; i++)
{
for(int j=i+1; j<N; j++) if(md<t[i]+t[j]+pr[j]-pr[i]) md=t[i]+t[j]+pr[j]-pr[i];
}
return md;
}
int bst[508];
stack<pair<int, int> > st;
long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c)
{
N=n;
ct=c;
for(int i=0; i<n; i++) t[i]=d[i];
for(int i=1; i<n; i++) dst[i]=l[i-1];
precalc();
for(int i=0; i<n; i++) diam=max(diam, t[i]+pr_ri[i]);
///cout<<diam<<endl;
///for(int i=0; i<n; i++) cout<<pr_le[i]<<" "<<pr_ri[i]<<endl;
st.push({0, n-1});
while(!st.empty())
{
int tb=st.top().first;
int te=st.top().second;
st.pop();
if(te<tb) continue;
int mid=(tb+te)/2;
///cout<<mid<<endl;
int grL=0, grD=n-1;
if(tb!=0) grL=bst[tb-1];
if(te!=n-1) grD=bst[te+1];
calc[mid]=1e18;
for(int i=grL; i<=grD; i++)
{
long long nd=find_diam(mid, i);
if(nd<calc[mid]) calc[mid]=nd, bst[mid]=i;
}
st.push({tb, mid-1});
st.push({mid+1, te});
}
///for(int i=0; i<n; i++) cout<<calc[i]<<" "<<bst[i]<<endl;
long long maxd=1e18;
for(int i=0; i<n; i++) if(calc[i]<maxd) maxd=calc[i];
return maxd;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
0 ms |
308 KB |
n = 9, 110 is a correct answer |
3 |
Correct |
0 ms |
212 KB |
n = 4, 21 is a correct answer |
4 |
Correct |
0 ms |
212 KB |
n = 3, 4 is a correct answer |
5 |
Correct |
0 ms |
212 KB |
n = 2, 62 is a correct answer |
6 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
212 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
212 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
212 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
0 ms |
212 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
0 ms |
212 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
304 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
212 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
304 KB |
n = 5, 4000000000 is a correct answer |
17 |
Correct |
0 ms |
212 KB |
n = 10, 1000000343 is a correct answer |
18 |
Correct |
0 ms |
212 KB |
n = 10, 3189 is a correct answer |
19 |
Correct |
0 ms |
340 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
212 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
212 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
340 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
0 ms |
212 KB |
n = 10, 117 is a correct answer |
24 |
Correct |
0 ms |
312 KB |
n = 10, 336 is a correct answer |
25 |
Correct |
0 ms |
304 KB |
n = 10, 438 is a correct answer |
26 |
Incorrect |
0 ms |
212 KB |
n = 10, incorrect answer: jury 206 vs contestant 217 |
27 |
Halted |
0 ms |
0 KB |
- |