#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
bool Spr(const vector<i64>& fields, i64 B, int amo)
{
if (amo == 0) return true;
i64 cost = 0;
for (int i = 0; i < amo; i++)
cost += llabs(fields[i] - fields[amo / 2]);
if (cost <= B) return true;
for (int i = 1; i + amo <= (int)fields.size(); i++)
{
cost += fields[i + amo - 1] - 2LL * fields[i + amo / 2] + fields[i - 1];
cost += (fields[i + amo / 2 + 1] - fields[i + amo / 2]) * (1LL * (amo / 2 * 2 - amo));
if (cost <= B) return true;
}
return false;
}
long long besthub(int R, int L, int X[], long long B)
{
vector<i64> fields(R);
for (int i = 0; i < R; i++) fields[i] = X[i];
int low = 0, high = R;
while (low < high)
{
int mid = (low + high + 1) / 2;
if (Spr(fields, B, mid))
low = mid;
else
high = mid - 1;
}
return low;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |