Submission #787608

# Submission time Handle Problem Language Result Execution time Memory
787608 2023-07-19T10:16:35 Z Sohsoh84 Shortcut (IOI16_shortcut) C++17
0 / 100
12 ms 1356 KB
#include "shortcut.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

#define sep		' '
#define debug(x)	cerr << #x << ": " << x << endl; 

const ll MAXN = 3000 + 10;
const ll INF = 3e18;

int n;
ll fans, L[MAXN], ps[MAXN], D[MAXN], XT[MAXN], XS[MAXN], c, mx_xt[MAXN], mx_xs[MAXN], f1[MAXN], f2[MAXN], FT[MAXN][MAXN], FS[MAXN][MAXN];

inline ll dist(int i, int j) {
	if (i > j) swap(i, j);
	return ps[j] - ps[i];
}

inline ll solve(int l, int r) {
	ll ans = 0;
	if (r < l) return INF;
	if (c >= dist(l, r)) return INF;

	ans = max(ans, mx_xs[l] + mx_xt[r] - dist(l, r) + c);
	
	int p = l;
	ll f = dist(l, r) + c;
	for (int i = l; i <= r; i++) {
		ans = max(ans, min(dist(l, i), dist(i, r) + c) + ps[l] + mx_xs[(i == l ? l - 1 : l)] + D[i]);
		ans = max(ans, min(dist(r, i), dist(i, l) + c) - ps[r] + mx_xt[(i == r ? r + 1 : r)] + D[i]);
		
		while (dist(p, i) > f / 2)
			p++;

		if (p < i) ans = max(ans, XT[i] + FS[p][i - 1]);
		if (l < p) ans = max(ans, f + XS[i] + FT[l][p - 1]);
	}

	ans = max(ans, f1[l - 1]);
	ans = max(ans, f2[r + 1]);

	return ans;
}

ll find_shortcut(int n_, vector<int> l_, vector<int> d_, int c_) {
	n = n_;
	c = c_;

	for (int i = 0; i < MAXN; i++)
		mx_xt[i] = mx_xs[i] = f1[i] = f2[i] = -INF;

	for (int i = 1; i <= n; i++) {
		L[i] = l_[i - 1];
		D[i] = d_[i - 1];
		if (i < n) ps[i + 1] = ps[i] + L[i];

		XS[i] = D[i] - ps[i];
		XT[i] = D[i] + ps[i];

		mx_xs[i] = max(mx_xs[i - 1], XS[i]);

		f1[i] = max(f1[i - 1], XT[i] + mx_xs[i - 1]);
	}

	for (int i = n; i > 0; i--) {
		mx_xt[i] = max(mx_xt[i + 1], XT[i]);
		f2[i] = max(f2[i + 1], XS[i] + mx_xt[i + 1]);
	}

	for (int i = 1; i <= n;  i++) {
		FT[i][i] = XT[i];
		FS[i][i] = XS[i];
		
		for (int j = i + 1; j <= n; j++) {
			FT[i][j] = max(FT[i][j - 1], XT[j]);
			FS[i][j] = max(FS[i][j - 1], XS[j]);
		}
	}

	for (int i = 1; i <= n; i++) {
		for (int j = i + 1; j <= n; j++)
			cerr << solve(i, j) << sep;
		
		cerr << endl;
	}

	fans = 0;
	for (int i = 1; i <= n; i++)
		for (int j = i + 1; j <= n; j++)
			fans = max(fans, dist(i, j) + D[i] + D[j]);

	
	for (int i = 1; i <= n; i++) {
		int l = i + 1, r = n;
		while (l < r) {
			int mid = (l + r) >> 1;
			if (solve(i, mid) >= solve(i, mid + 1) && !(i < n - 1 && solve(i, mid) == solve(i, mid + 1) && solve(i, mid) < solve(i, mid + 2))) l = mid + 1;
			else r = mid;
		}

		fans = min(fans, solve(i, l));
	}

	return fans;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 0 ms 340 KB n = 4, 21 is a correct answer
4 Correct 0 ms 340 KB n = 3, 4 is a correct answer
5 Correct 0 ms 340 KB n = 2, 62 is a correct answer
6 Correct 0 ms 340 KB n = 2, 3 is a correct answer
7 Correct 1 ms 340 KB n = 3, 29 is a correct answer
8 Correct 0 ms 340 KB n = 2, 3 is a correct answer
9 Correct 0 ms 340 KB n = 2, 3 is a correct answer
10 Correct 0 ms 340 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 340 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 340 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 340 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 340 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 340 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 340 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 340 KB n = 5, 12 is a correct answer
21 Correct 1 ms 340 KB n = 5, 25 is a correct answer
22 Correct 0 ms 340 KB n = 2, 122 is a correct answer
23 Correct 1 ms 468 KB n = 10, 117 is a correct answer
24 Correct 1 ms 468 KB n = 10, 336 is a correct answer
25 Correct 1 ms 468 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 0 ms 340 KB n = 4, 2399 is a correct answer
29 Correct 1 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 1 ms 468 KB n = 10, 3112 is a correct answer
31 Correct 12 ms 1356 KB n = 100, 51000000001 is a correct answer
32 Incorrect 3 ms 852 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -