#include <iostream>
#include <vector>
#define ll long long
using namespace std;
vector <ll> A, B;
ll n, k, t, l, r, mid, X[100000];
bool solve(ll u) {
u *= 2;
ll j = 0;
ll xa = 0, xb = 0, tot = 1;
for (ll i=0; i<A.size(); ++i) {
while ((i+j+1)*u-xb < A[i]) {
if (j < B.size() && xa+B[j] <= (i+j+1)*u) {
xb = B[j];
++j;
}
else break;
}
if ((i+j+1)*u-xb < A[i]) return 0;
xa = A[i];
}
while (j < B.size() && xa+B[j] <= ((ll)A.size()+j+1)*u) {
++j;
}
if (j == B.size()) return 1;
else return 0;
}
int main() {
cin >> n >> k >> t;
--k;
for (int i=0; i<n; ++i) cin >> X[i];
for (int i=k-1; i>=0; --i) A.push_back(X[k]-X[i]);
for (int i=k+1; i<n; ++i) B.push_back(X[i]-X[k]);
l = 0, r = ((ll)1e9+t-1)/t;
while (l < r) {
mid = (l+r)/2;
if (solve(mid*t)) r = mid;
else l = mid+1;
}
cout << l << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |