#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
#define ff first
#define ss second
#define MP make_pair
const int mxn = 5e5 + 10;
int a[mxn], r[mxn], n, t;
bool can(int d) {
vector<pii> vec;
for(int i = 1; i <= n; i++) {
int l = ::r[i] - d;
int r = ::r[i] + d;
if(l < 0) {
l += t;
r += t;
}
vec.push_back(MP(l, r));
}
sort(vec.begin(), vec.end());
for(int i = 1; i <= n; i++) {
if(vec[i - 1].ss < vec[i].ff)
return false;
}
return true;
}
int main() {
cin >> n >> t;
bool sus = true;
for(int i = 1; i <= n; i++) {
cin >> a[i];
r[i] = a[i] % t;
if(r[i]) sus = false;
}
if(sus) {
cout << 0 << endl;
return 0;
}
int L = 0, R = t;
while(R - L > 1) {
int M = (L + R) / 2;
if(can(M)) R = M;
else L = M;
}
if(R == 0) return 1;
cout << R << endl;
return 0;
}
# | 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... |