#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
#define ld long double
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
const int MAXN = 5e5;
const ll INF = 1e18;
const int MOD = 1e9 + 7;
ll A[MAXN + 5];
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int tc = 1;
// cin >> tc;
for(;tc--;){
ll N, T; cin >> N >> T;
vector<ll> comp;
for(int i = 1; i <= N; i++){
cin >> A[i];
A[i] %= T;
comp.push_back(A[i]);
}
sort(comp.begin(), comp.end());
comp.erase(unique(comp.begin(), comp.end()), comp.end());
auto calc = [&](ll i, ll j){
return min({abs(j - i), abs((i + T) - j), abs(i - (j + T))});
};
ll ans = INF;
for(auto i : comp){
ll cur = 0;
cur = max(cur, calc(i, comp[0]));
cur = max(cur, calc(i, comp.back()));
auto it = lower_bound(comp.begin(), comp.end(), (i + T / 2) % T);
if(it != comp.end()){
cur = max(cur, calc(i, (*it)));
}
if(it != comp.begin()){
--it;
cur = max(cur, calc(i, (*it)));
}
ans = min(ans, cur);
i = (T - i) % T;
cur = 0;
cur = max(cur, calc(i, comp[0]));
cur = max(cur, calc(i, comp.back()));
it = lower_bound(comp.begin(), comp.end(), (i + T / 2) % T);
if(it != comp.end()){
cur = max(cur, calc(i, (*it)));
}
if(it != comp.begin()){
--it;
cur = max(cur, calc(i, (*it)));
}
ans = min(ans, cur);
}
cout << ans << "\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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |