답안 #140506

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
140506 2019-08-03T09:11:38 Z bazsi700 Shortcut (IOI16_shortcut) C++14
0 / 100
21 ms 376 KB
#include <bits/stdc++.h>
#include "shortcut.h"
using namespace std;

#define MOD 1000000007
#define ll long long int
#define vi vector<int>
#define vii vector< vector<int> >
#define PI 3.1415926535897932384626433832795
#define INF 9223372036854775807LL
#define hashA 1257958787
#define hashB 1539500609
#define endl "\n"

ll pref[10005];
vector<int> l;
vector<int> d;
int n,c;

ll getdist(ll a, ll b) {
	if(a > b) {
		swap(a,b);
	}
	return pref[b]-pref[a];
}

ll getcost(int b1, int b2) {
	if(max(b1,b2) >= n) {
		return INF;
	}
	ll mx = 0;
	for(int v1 = 0; v1 < n; v1++) {
		for(int v2 = v1+1; v2 < n; v2++) {
			ll dist = getdist(v1,v2);
			dist = min(dist,getdist(v1,b1)+c+getdist(v2,b2));
			mx = max(mx,dist+d[v1]+d[v2]);
		}
	}
	return mx;
}

ll find_shortcut(int N, vector<int> L, vector<int> D, int C) {
	n = N;
	c = C;
	l = L;
	d = D;
	ll ans = 0;
	ll currdist = d[0];
	for(int i = 1; i < n; i++) {
		pref[i] = pref[i-1]+l[i-1];
	}/*
	for(int i = 1; i < n; i++) {
		currdist+= l[i-1];
		ans = max(ans,currdist+d[i]);
		currdist = max(currdist,(ll)d[i]);
	}*/
	ll mn = INF;
	for(int b1 = 0; b1 < n; b1++) {
		int b2l = b1+1;
		int b2r = n-1;
		while(b2l < b2r) {
			int b2 = (b2l+b2r)/2;
			ll val1 = getcost(b1,b2);
			ll val2 = getcost(b1,b2+1);
			if(val2 > val1) {
				b2r = b2;
			} else {
				b2l = b2+1;
			}
			mn = min(mn,val1);
			mn = min(mn,val2);
		}
		mn = min(mn,getcost(b1,b2l));
		mn = min(mn,getcost(b1,b2r));
	}
	return mn;
}

Compilation message

shortcut.cpp: In function 'long long int find_shortcut(int, std::vector<int>, std::vector<int>, int)':
shortcut.cpp:47:5: warning: unused variable 'ans' [-Wunused-variable]
  ll ans = 0;
     ^~~
shortcut.cpp:48:5: warning: unused variable 'currdist' [-Wunused-variable]
  ll currdist = d[0];
     ^~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB n = 4, 80 is a correct answer
2 Correct 2 ms 376 KB n = 9, 110 is a correct answer
3 Correct 2 ms 376 KB n = 4, 21 is a correct answer
4 Correct 2 ms 256 KB n = 3, 4 is a correct answer
5 Correct 2 ms 256 KB n = 2, 62 is a correct answer
6 Correct 2 ms 376 KB n = 2, 3 is a correct answer
7 Correct 2 ms 256 KB n = 3, 29 is a correct answer
8 Correct 2 ms 376 KB n = 2, 3 is a correct answer
9 Correct 2 ms 376 KB n = 2, 3 is a correct answer
10 Correct 2 ms 376 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 256 KB n = 2, 3000000000 is a correct answer
12 Correct 2 ms 256 KB n = 3, 3000000000 is a correct answer
13 Correct 2 ms 376 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 376 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 376 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 256 KB n = 5, 4000000000 is a correct answer
17 Correct 2 ms 376 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 376 KB n = 10, 3189 is a correct answer
19 Correct 2 ms 376 KB n = 10, 7000000000 is a correct answer
20 Correct 2 ms 376 KB n = 5, 12 is a correct answer
21 Correct 2 ms 256 KB n = 5, 25 is a correct answer
22 Correct 2 ms 376 KB n = 2, 122 is a correct answer
23 Correct 2 ms 376 KB n = 10, 117 is a correct answer
24 Correct 2 ms 376 KB n = 10, 336 is a correct answer
25 Correct 2 ms 256 KB n = 10, 438 is a correct answer
26 Correct 2 ms 256 KB n = 10, 206 is a correct answer
27 Correct 2 ms 256 KB n = 10, 636 is a correct answer
28 Correct 2 ms 376 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 376 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 256 KB n = 10, 3112 is a correct answer
31 Correct 21 ms 256 KB n = 100, 51000000001 is a correct answer
32 Incorrect 4 ms 376 KB n = 50, incorrect answer: jury 197881272 vs contestant 197881348
33 Halted 0 ms 0 KB -