# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
853146 |
2023-09-23T13:30:21 Z |
qin |
Shortcut (IOI16_shortcut) |
C++17 |
|
1 ms |
600 KB |
#include <bits/stdc++.h>
#define fi first
#define se second
#define ssize(x) int(x.size())
#define pn printf("\n");
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<int, ll> pil;
typedef pair<ll, int> pli;
typedef pair<ll, ll> pll;
int inf = 1e09; ll infll = 1e18;
struct gr{
vector<vector<pil>> g;
vector<ll> dist;
void init(int n){ g.resize(n), dist.resize(n); }
void prepare(){ fill(dist.begin(), dist.end(), infll); }
void dfs(int x, ll d){
dist[x] = d;
for(pil u : g[x]) if(d+u.se < dist[u.fi]) dfs(u.fi, d+u.se);
}
} gr;
ll find_diam(int n, int a, int b, int c){
gr.g[a].emplace_back(b, c), gr.g[b].emplace_back(a, c);
ll tmp_res = 0;
for(int u = 0; u < n<<1; ++u){
gr.prepare(); gr.dfs(u, 0);
ll d = -1;
for(int i = 0; i < n<<1; ++i) if(gr.dist[i] != infll && d < gr.dist[i]) d = gr.dist[i];
tmp_res = max(tmp_res, d);
}
gr.g[a].pop_back(), gr.g[b].pop_back();
return tmp_res;
}
ll find_shortcut(int n, vector<int> d_main, vector<int> d_sec, int C){
gr.init(n<<1);
for(int i = 0; i < n-1; ++i) gr.g[i].emplace_back(i+1, d_main[i]), gr.g[i+1].emplace_back(i, d_main[i]);
for(int i = 0; i < n; ++i) gr.g[i].emplace_back(i+n, d_sec[i]), gr.g[i+n].emplace_back(i, d_sec[i]);
ll result = infll;
vector<int> candidates;
for(int p = 0; p < n-1; ++p){
int l = p+1, r = n-1;
//printf("%d:\n", p);
while(r-l >= 4){
//printf("%d %d: ", l, r);
int a = l+(r-l)/4, b = l+2*(r-l)/4, c = l+3*(r-l)/4;
ll res_a = find_diam(n, p, a, C), res_b = find_diam(n, p, b, C), res_c = find_diam(n, p, c, C);
//printf("%d %d %d, %lld %lld %lld\n", a, b, c, res_a, res_b, res_c);
if(res_a < res_b && res_b <= res_c) r = c;
else if(res_a < res_b && res_b < res_c) r = b;
else if(res_a <= res_b && res_b < res_c) r = c;
else if(res_a > res_b && res_b >= res_c) l = a;
else if(res_a > res_b && res_b > res_c) l = b;
else if(res_a >= res_b && res_b > res_c) l = a;
else{
res_a = find_diam(n, p, l+1, C), res_b = find_diam(n, p, r-1, C);
if(res_a < res_b) r = a;
else if(res_a > res_b) l = c;
else ++l;
}
} //printf("%d %d\n", l, r);
for(int i = l; i <= r; ++i) result = min(result, find_diam(n, p, i, C));
}
return result;
}
#ifdef LOCAL
int main(){
int n, c; scanf("%d%d", &n, &c);
vector<int> d_main(n), d_sec(n);
for(int i = 0; i < n-1; ++i) scanf("%d", &d_main[i]);
for(int i = 0; i < n; ++i) scanf("%d", &d_sec[i]);
ll result = find_shortcut(n, d_main, d_sec, c);
printf("%lld\n", result);
return 0;
}
#endif
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
n = 4, 80 is a correct answer |
2 |
Correct |
1 ms |
344 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 |
344 KB |
n = 2, 3 is a correct answer |
7 |
Correct |
0 ms |
344 KB |
n = 3, 29 is a correct answer |
8 |
Correct |
1 ms |
344 KB |
n = 2, 3 is a correct answer |
9 |
Correct |
0 ms |
348 KB |
n = 2, 3 is a correct answer |
10 |
Correct |
1 ms |
600 KB |
n = 2, 2000000001 is a correct answer |
11 |
Correct |
1 ms |
344 KB |
n = 2, 3000000000 is a correct answer |
12 |
Correct |
0 ms |
344 KB |
n = 3, 3000000000 is a correct answer |
13 |
Correct |
1 ms |
600 KB |
n = 3, 3000000000 is a correct answer |
14 |
Correct |
0 ms |
344 KB |
n = 4, 3000000001 is a correct answer |
15 |
Correct |
0 ms |
344 KB |
n = 4, 4000000000 is a correct answer |
16 |
Correct |
0 ms |
348 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 |
600 KB |
n = 10, 7000000000 is a correct answer |
20 |
Correct |
0 ms |
344 KB |
n = 5, 12 is a correct answer |
21 |
Correct |
1 ms |
348 KB |
n = 5, 25 is a correct answer |
22 |
Correct |
0 ms |
344 KB |
n = 2, 122 is a correct answer |
23 |
Correct |
1 ms |
344 KB |
n = 10, 117 is a correct answer |
24 |
Incorrect |
1 ms |
344 KB |
n = 10, incorrect answer: jury 336 vs contestant 338 |
25 |
Halted |
0 ms |
0 KB |
- |