#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<double, double>;
const int INF = 2e9;
const ll INFL = 2e18;
const ll MOD = 1e9 + 7;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n, t; cin >> n >> t;
vector<ll> a(n); for (auto &x: a) cin >> x;
for (ll i = 0; i < n; i++) a[i] %= t;
if (n == 2) {
a[0] = min(a[0], t - a[0]);
a[1] = min(a[1], t - a[1]);
cout << (a[0] + a[1] + 1) / 2 << "\n";
return 0;
}
auto f = [&](ll x) {
ll ret = 0;
for (ll i = 0; i < n; i++) ret = max(min((a[i] + x) % t, t - ((a[i] + x) % t)), ret);
return ret;
};
auto g = [&](ll y) {
ll mine = t;
for (ll i = 0; i < t; i++) mine = min(mine, f(i));
return mine <= y;
};
if (g(0)) {
cout << 0 << "\n";
return 0;
}
ll l = 1, r = t - 1;
while (l <= r) {
ll mid = (l + r) / 2;
if (g(mid)) {
if (!g(mid - 1)) {
cout << mid << "\n";
break;
} else {
r = mid - 1;
}
} else l = mid + 1;
}
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |