답안 #114634

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
114634 2019-06-02T06:05:44 Z davitmarg Shortcut (IOI16_shortcut) C++17
0 / 100
2 ms 432 KB
/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <iomanip>
#include <bitset>
#include <stack>
#include <cassert>
#include <iterator>
#include <ctype.h>
#include <fstream>
#define mod 1000000007ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin (),v.end()
using namespace std;
int n;
vector<LL> p, d, pr;
LL c,best=mod*mod;

LL get(int i,int j)
{
	if (i > j)
		swap(i, j);
	return pr[j] - pr[i];
}

int Main()
{
	pr.resize(n);
	for (int i = 1; i < n; i++)
		pr[i] = pr[i - 1] + p[i - 1];
	for (int l = 0; l < n; l++)
		for (int r = l+1; r < n; r++)
		{
			LL ans = -mod * mod;
			LL mx = d[0];
			ans = mx;
			for (int i = 1; i < l; i++)
			{
				mx += p[i - 1];
				ans = max(ans, mx + d[i]);
				mx = max(mx, d[i]);
			}

			if (l - 1 >= 0)
				for (int i = l; i <= r; i++)
					ans = max(ans,mx + min(get(l, i), get(l, r) + c - get(l, i)) + d[i] + p[l-1]);

			for (int i = r + 1; i < n; i++)
			{
				if (i == r + 1)
					mx += min(get(l, r), c) + p[i - 1];
				else
					mx += p[i - 1];
				ans = max(ans, mx + d[i]);
				mx = max(mx, d[i]);
			}

			mx = d[n-1];
			for (int i = n - 2; i > r; i--)
			{
				mx += p[i];
				ans = max(ans, mx + d[i]);
				mx = max(mx, d[i]);
			}

			if (r + 1 < n)
				for (int i = l; i <= r; i++)
					ans = max(ans, mx + min(get(r, i), get(l, r) + c - get(r, i)) + d[i] + p[r]);

			for (int i = l; i <= r; i++)
				for (int j = i+1; j <= r; j++)
					ans = max(ans, d[i] + d[j] + min(get(i, j), get(l, r) + c - get(i, j)));
			for (int i = 0; i < n; i++)
				ans = max(ans,d[i]);
			best = min(best,ans);
		}

	return 0;
}

LL find_shortcut(int N,vector<int> L, vector<int> D,int C)
{
	n = N;
	for (int i = 0; i < n - 1; i++)
		p.PB(L[i]);
	for (int i = 0; i < n; i++)
		d.PB(D[i]);
	c = C;
	Main();
	return best;
}

#ifdef death

int main()
{
	int N,C;
	vector<int> L, D;
	cin >> N >> C;
	for (int i = 0; i < N-1; i++)
	{
		L.PB(0);
		cin >> L.back();
	}
	for (int i = 0; i < N; i++)
	{
		D.PB(0);
		cin >> D.back();
	}
	cout << find_shortcut(N,L,D,C) << endl;
	return 0;
}

#endif 


/*



*/
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 4, 80 is a correct answer
2 Correct 2 ms 384 KB n = 9, 110 is a correct answer
3 Correct 2 ms 256 KB n = 4, 21 is a correct answer
4 Correct 2 ms 384 KB n = 3, 4 is a correct answer
5 Correct 2 ms 384 KB n = 2, 62 is a correct answer
6 Correct 2 ms 256 KB n = 2, 3 is a correct answer
7 Correct 2 ms 384 KB n = 3, 29 is a correct answer
8 Correct 2 ms 384 KB n = 2, 3 is a correct answer
9 Correct 2 ms 256 KB n = 2, 3 is a correct answer
10 Correct 2 ms 384 KB n = 2, 2000000001 is a correct answer
11 Correct 2 ms 384 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 384 KB n = 3, 3000000000 is a correct answer
14 Correct 2 ms 432 KB n = 4, 3000000001 is a correct answer
15 Correct 2 ms 256 KB n = 4, 4000000000 is a correct answer
16 Correct 2 ms 384 KB n = 5, 4000000000 is a correct answer
17 Incorrect 2 ms 256 KB n = 10, incorrect answer: jury 1000000343 vs contestant 1000000341
18 Halted 0 ms 0 KB -