Submission #278589

# Submission time Handle Problem Language Result Execution time Memory
278589 2020-08-21T15:06:23 Z eohomegrownapps Shortcut (IOI16_shortcut) C++14
0 / 100
1 ms 384 KB
#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll find_shortcut(int n, vector<int> l, vector<int> d, int c){
	vector<ll> pathlength(n);
	for (ll i = 1; i<n; i++){
		pathlength[i]=pathlength[i-1]+l[i-1];
	}

	vector<ll> prefixmax(n);
	vector<ll> suffixmax(n);
	prefixmax[0]=pathlength[n-1]-pathlength[0]+d[0];
	for (ll i = 1; i<n; i++){
		prefixmax[i]=max(prefixmax[i-1],d[i]+pathlength[n-1]-pathlength[i]);
	}
	for (ll i = 0; i<n; i++){
		prefixmax[i]-=pathlength[n-1]-pathlength[i];
	}
	suffixmax[n-1]=pathlength[n-1]-pathlength[0]+d[n-1];
	for (ll i = n-2; i>=0; i--){
		suffixmax[i]=max(suffixmax[i+1],d[i]+pathlength[i]-pathlength[0]);
	}
	for (ll i = 0; i<n; i++){
		suffixmax[i]-=pathlength[i]-pathlength[0];
	}

	vector<ll> prefixrangemax(n);
	vector<ll> suffixrangemax(n);
	for (int i = 1; i<n; i++){
		for (int j = 0; j<i; j++){
			//from j to i
			prefixrangemax[i]=max(prefixrangemax[i],d[i]+d[j]+pathlength[i]-pathlength[j]);
		}
	}
	for (int i = n-2; i>=0; i--){
		for (int j = i+1; j<n; j++){
			//from j to i
			suffixrangemax[i]=max(suffixrangemax[i],d[i]+d[j]+pathlength[j]-pathlength[i]);
		}
	}

	vector<ll> endspluspath(n);
	vector<ll> endsminuspath(n);
	for (ll i = 0; i<n; i++){
		endspluspath[i]=d[i]+pathlength[i];
		endsminuspath[i]=d[i]-pathlength[i];
	}
	ll mindist = 1e18;
	/*for (int i : prefixmax){
		cout<<i<<' ';
	}cout<<'\n';
	for (int i : suffixmax){
		cout<<i<<' ';
	}cout<<'\n';*/
	for (ll a = 0; a<n-1; a++){
		for (ll b = a+1; b<n; b++){
			//try express road linking a and b
			ll mxdist = max(prefixrangemax[a],suffixrangemax[b]);
			//try thing-on-left to thing-on-right
			mxdist = max(mxdist,min(ll(c),pathlength[b]-pathlength[a])+suffixmax[b]+prefixmax[a]);
			//try thing-on-left to middle, thing-on-right to middle

			//segmenttree-ify
			for (ll x = a; x<=b; x++){
				if (x!=a){
					mxdist = max(mxdist,
						min(
							pathlength[b]-pathlength[x]+c,
							pathlength[x]-pathlength[a]
							) + prefixmax[a] + d[x]);
				}
				if (x!=b){
					mxdist = max(mxdist,
						min(
							pathlength[b]-pathlength[x],
							pathlength[x]-pathlength[a]+c
							) + suffixmax[b] + d[x]);
				}
			}
		
			//try thing-on-middle to thing-on-middle
			for (ll m = a; m<b; m++){
				for (ll n = a+1; n<=b; n++){
					//from m to n
					mxdist = max(mxdist,
						min(
							c+pathlength[b]-pathlength[n]+pathlength[m]-pathlength[a],
							pathlength[n]-pathlength[m]
						)+d[n]+d[m]);
				}
			}
			//cout<<a<<' '<<b<<": "<<mxdist<<'\n';
			mindist = min(mindist, mxdist);
		}
	}
    return mindist;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB n = 4, 80 is a correct answer
2 Correct 1 ms 256 KB n = 9, 110 is a correct answer
3 Correct 0 ms 256 KB n = 4, 21 is a correct answer
4 Correct 0 ms 256 KB n = 3, 4 is a correct answer
5 Correct 0 ms 256 KB n = 2, 62 is a correct answer
6 Correct 1 ms 256 KB n = 2, 3 is a correct answer
7 Correct 0 ms 256 KB n = 3, 29 is a correct answer
8 Correct 1 ms 256 KB n = 2, 3 is a correct answer
9 Correct 1 ms 256 KB n = 2, 3 is a correct answer
10 Correct 0 ms 256 KB n = 2, 2000000001 is a correct answer
11 Correct 0 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 0 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 1 ms 256 KB n = 3, 3000000000 is a correct answer
14 Correct 0 ms 256 KB n = 4, 3000000001 is a correct answer
15 Correct 0 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 0 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 256 KB n = 10, 1000000343 is a correct answer
18 Correct 1 ms 256 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 256 KB n = 10, 7000000000 is a correct answer
20 Correct 0 ms 256 KB n = 5, 12 is a correct answer
21 Correct 0 ms 320 KB n = 5, 25 is a correct answer
22 Correct 0 ms 256 KB n = 2, 122 is a correct answer
23 Incorrect 0 ms 256 KB n = 10, incorrect answer: jury 117 vs contestant 110
24 Halted 0 ms 0 KB -