#include<bits/stdc++.h>
using namespace std;
long long find_shortcut(int n, vector<int> l, vector<int> d, int c){
long long L = 1, R = (long long)1e9 * n, M, B = R;
long long t[n];
vector<pair<long long, long long>> mtd[n];
vector<long long> smin[n];
t[0] = 0;
for(int i = 1;i < n;i++) t[i] = l[i]+t[i-1];
for(int i = 0;i < n;i++){
for(int j = i+1;j < n;j++){
mtd[i].emplace_back(t[j]+d[j], t[j]-d[j]);
}
sort(mtd[i].begin(), mtd[i].end());
smin[i].resize(mtd[i].size());
long long nex = LONG_LONG_MAX;
for(int j = n-1;j > i;j--){
nex = smin[i][j] = min(t[j]-mtd[i][j].second, nex);
}
}
while(L <= R){
M = L+(R-L)/2;
bool ok = false;
for(int i = 0;i < n;i++){
long long le = 0, re = LONG_LONG_MAX;
for(int j = 0;j < n;j++){
if(mtd[j].empty() || mtd[j].back().first-t[j]+d[j] <= M) continue;
le = max(le, abs(t[j]-t[i])+mtd[j].back().first+d[j]+c-M);
int p = lower_bound(mtd[j].begin(), mtd[j].end(), make_pair(M+t[j]-d[j]+1, LONG_LONG_MIN))-mtd[j].begin();
re = min(re, smin[j][p]-abs(t[j]-t[i])-d[j]+M-c);
}
for(int j=0;j < n;j++) ok |= le <= t[j] && t[j] <= re;
}
if(ok) {
R = M-1;
B = M;
} else L = M+1;
}
return B;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
340 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |