Submission #134705

# Submission time Handle Problem Language Result Execution time Memory
134705 2019-07-23T07:38:18 Z Mahdi_Jfri Shortcut (IOI16_shortcut) C++14
0 / 100
5 ms 4600 KB
#include "shortcut.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back

const int maxn = 5e2 + 20;

ll s[maxn] , pf[maxn] , sf[maxn] , mxp[maxn] , mxs[maxn];
int d[maxn];

ll mx[maxn][maxn][2];

ll fn(int a , int b)
{
	if(a > b)
		swap(a , b);

	return s[b] - s[a];
}

long long find_shortcut(int n, std::vector<int> L, std::vector<int> D, int c)
{
	for(int i = 0; i < n; i++)
	{
		d[i] = D[i];
		if(i)
			s[i] = L[i - 1] + s[i - 1];
	}

	memset(pf , -63 , sizeof pf);
	memset(sf , -63 , sizeof sf);
	memset(mxp , -63 , sizeof mxp);
	memset(mxs , -63 , sizeof mxs);
	for(int i = 0; i < n; i++)
	{
		if(i)
		{
			pf[i] = pf[i - 1];
			mxp[i] = mxp[i - 1];
			pf[i] = max(pf[i - 1] , mxp[i - 1] + d[i] + s[i]);
		}

		mxp[i] = max(mxp[i] , d[i] - s[i]);
	}

	for(int i = n - 1; i >= 0; i--)
	{
		sf[i] = max(sf[i + 1] , d[i] - s[i] + mxs[i + 1]);
		mxs[i] = max(mxs[i + 1] , d[i] + s[i]);
	}

	memset(mx , -63 , sizeof mx);
	for(int i = 0; i < n; i++)
		for(int j = i + 1; j < n; j++)
		{
			mx[i][j][0] = max(mx[i][j - 1][0] , d[i] - s[i]);
			mx[i][j][1] = max(mx[i][j - 1][1] , d[i] + s[i]);
		}

	ll ans = pf[n - 1];
	for(int l = 0; l < n; l++)
		for(int r = l + 1; r < n; r++)
		{
			if(c > s[r] - s[l])
				continue;

			ll res = max(pf[l] , sf[r]);
			res = max(res , mxp[l] + mxs[r] + c - (s[r] - s[l]));

			int pt = l + 1;
			for(int v = l + 1; v < r; v++)
			{
				ll dis1 = min(s[v] - s[l] , s[r] - s[v] + c) + mxp[l] + s[l] + d[v];
				ll dis2 = min(s[r] - s[v] , s[v] - s[l] + c) + mxs[r] - s[r] + d[v];
				res = max(res , max(dis1 , dis2));

				while(pt < v && s[v] - s[pt] >= s[r] - s[v] + c + s[pt] - s[l])
					pt++;

				res = max(res , s[v] + mx[pt][v][0] + d[v]);
				res = max(res , d[v] + s[r] - s[v] + c - s[l] + mx[l][pt][1]);
			}

			ans = min(ans , res);
		}

	return ans;
}




# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 4600 KB n = 4, 80 is a correct answer
2 Correct 5 ms 4600 KB n = 9, 110 is a correct answer
3 Correct 5 ms 4600 KB n = 4, 21 is a correct answer
4 Correct 5 ms 4600 KB n = 3, 4 is a correct answer
5 Correct 5 ms 4572 KB n = 2, 62 is a correct answer
6 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
7 Correct 5 ms 4600 KB n = 3, 29 is a correct answer
8 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
9 Correct 5 ms 4600 KB n = 2, 3 is a correct answer
10 Correct 5 ms 4600 KB n = 2, 2000000001 is a correct answer
11 Correct 5 ms 4600 KB n = 2, 3000000000 is a correct answer
12 Incorrect 5 ms 4600 KB n = 3, incorrect answer: jury 3000000000 vs contestant 3000000001
13 Halted 0 ms 0 KB -