Submission #1214905

#TimeUsernameProblemLanguageResultExecution timeMemory
1214905JooDdaeSparklers (JOI17_sparklers)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n, k, t, a[100100];
ll p[100100];

bool solve(int mid) {
	for(int i=1;i<=n;i++) p[i] = a[i]-1ll*t*i*2*mid;
	
	int L = k, R = k;
	ll mx = p[k], mn = p[k];
	while(1 < L || R < n) {
		if(1 < L && p[L-1] >= mn) mx = max(mx, p[--L]);
		else if(R < n && mx >= p[R+1]) mn = min(mn, p[++R]);
		else break;
	}
	return 1 == L && R == n;
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
	cin >> n >> k >> t;
	for(int i=1;i<=n;i++) cin >> a[i];

	int l = 0, r = 1e9;
	while(l <= r) {
		int mid = (l+r)/2;
		if(solve(mid)) r = mid-1;
		else l = mid+1;
	}
	cout << l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...