Submission #739831

#TimeUsernameProblemLanguageResultExecution timeMemory
739831blueSparklers (JOI17_sparklers)C++17
0 / 100
1 ms324 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using vll = vector<ll>;
using vi = vector<int>;
using vvll = vector<vll>;
using vvi = vector<vi>;

#define sz(x) int(x.size())

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	ll N, K, T;
	cin >> N >> K >> T;

	vll X(1+N);
	for(int i = 1; i <= N; i++)
	{
		cin >> X[i];
	}



	ll lo = 1, hi = ((((1'000'000'000'000'000'000LL / 2LL + 1) / N) + 1) / T) + 1; 
	// ll lo = 1, hi = 1'000'000'000'000'000'000LL/N;
	while(lo != hi)
	{
		ll mid = (lo + hi)/2;

		vvll dp(1+N, vll(1+N, 0));

		// for(ll l = N; l >= 1; l--)
		for(ll d = 0; d <= N-1; d++)
		{
			for(ll l = 1; l+d <= N; l++)
			{
				ll r = l+d;

				if(l == r && r == K)
					dp[l][r] = 1;
				else if(2LL * T * (r-l) * mid < X[r] - X[l])
				// else if(2LL * (r-l) * mid < X[r] - X[l])
					dp[l][r] = 0;
				else if(l < r)
					dp[l][r] = dp[l+1][r] || dp[l][r-1];
			}
		}

		if(dp[1][N] == 1)
			hi = mid;
		else
			lo = mid+1;
	}

	cout << lo << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...