Submission #1157022

#TimeUsernameProblemLanguageResultExecution timeMemory
1157022dubabubaRoom Temperature (JOI24_ho_t1)C++20
35 / 100
1 ms328 KiB
#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;
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
		r[i] = a[i] % t;
	}

	bool sus = true;
	for(int i = 2; i <= n; i++)
		if(r[i - 1] != 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...