답안 #853107

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
853107 2023-09-23T12:34:33 Z qin Shortcut (IOI16_shortcut) C++17
0 / 100
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_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<ll> dist_tmp;
		for(int a = 0; a < n-1; ++a)
				for(int b = a+1; b < n; ++b){
						gr.g[a].emplace_back(b, c), gr.g[b].emplace_back(a, c);
						//printf("%d %d: ", a, b);
						gr.prepare(); gr.dfs(0, 0);
						int x = -1; ll d = -1;
						for(int i = 0; i < n<<1; ++i) if(gr.dist[i] != infll && d < gr.dist[i]) x = i, d = gr.dist[i];
						//printf("%d %lld\n", x, d);
						if(!d){
								gr.prepare(); gr.dfs(x, 0);
								x = -1, d = -1;
								for(int i = 0; i < n<<1; ++i) if(gr.dist[i] != infll && d < gr.dist[i]) x = i, d = gr.dist[i];
								result = min(result, d);
						} else{
								dist_tmp = gr.dist;
								//for(ll i : dist_tmp) printf("%lld ", i);
								//pn;
								ll tmp_d, tmp_res = 0;
								for(int i = 0; i < n<<1; ++i){
										if(d == dist_tmp[i]) gr.prepare(), gr.dfs(i, 0);
										tmp_d = -1;
										for(int j = 0; j < n<<1; ++j) if(gr.dist[j] != infll && tmp_d < gr.dist[j]) tmp_d = gr.dist[j];
										tmp_res = max(tmp_res, tmp_d);
								} //printf("%lld\n", tmp_res);
								result = min(result, tmp_res);
						}
						gr.g[a].pop_back(), gr.g[b].pop_back();
				}
		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
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 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 344 KB n = 4, 21 is a correct answer
4 Correct 1 ms 344 KB n = 3, 4 is a correct answer
5 Correct 1 ms 344 KB n = 2, 62 is a correct answer
6 Correct 1 ms 344 KB n = 2, 3 is a correct answer
7 Correct 1 ms 344 KB n = 3, 29 is a correct answer
8 Correct 0 ms 348 KB n = 2, 3 is a correct answer
9 Correct 1 ms 344 KB n = 2, 3 is a correct answer
10 Correct 1 ms 344 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 600 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 344 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 344 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 344 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 344 KB n = 10, 3189 is a correct answer
19 Correct 0 ms 344 KB n = 10, 7000000000 is a correct answer
20 Incorrect 0 ms 348 KB n = 5, incorrect answer: jury 12 vs contestant 11
21 Halted 0 ms 0 KB -