Submission #134669

#TimeUsernameProblemLanguageResultExecution timeMemory
134669Mahdi_JfriShortcut (IOI16_shortcut)C++14
23 / 100
2057 ms504 KiB
#include "shortcut.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back

const int maxn = 5e3 + 20;

ll s[maxn];
int d[maxn];

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];
	}

	ll ans = 1e18;
	for(int l = 0; l < n; l++)
		for(int r = l; r < n; r++)
		{
			ll res = 0;
			for(int a = 0; a < n; a++)
				for(int b = a + 1; b < n; b++)
				{
					ll dis = fn(a , b);
					dis = min(dis , fn(a , l) + c + fn(r , b));
					dis = min(dis , fn(a , r) + c + fn(l , b));

					dis += d[a] + d[b];
					res = max(res , dis);
				}

			ans = min(ans , res);
		}

	return ans;
}




#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...