Submission #81695

#TimeUsernameProblemLanguageResultExecution timeMemory
81695aminraCipele (COCI18_cipele)C++14
90 / 90
338 ms1436 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int MAXN = (int)1e5 + 7;
const int infint = (int)1e9;
const ll inf = (ll)1e18;
int n, m, a[MAXN], b[MAXN];
bool check(ll mid)
{
	if(n <= m)
	{
		int last = m;
		for (int j = n - 1; j >= 0; j--)
		{
			int r = upper_bound(b, b + m, a[j] + mid) - b - 1;
			int l = lower_bound(b, b + m, a[j] - mid) - b;
			if(l > r)
				return 0;
			if(l > last - 1)
				return 0;
			last = min(r, last - 1);
		}
		return 1;
	}
	else
	{
		int last = n;
		for (int j = m - 1; j >= 0; j--)
		{
			int r = upper_bound(a, a + n, b[j] + mid) - a - 1;
			int l = lower_bound(a, a + n, b[j] - mid) - a;
			if(l > r)
				return 0;
			if(l > last - 1)
				return 0;
			last = min(r, last - 1);	
		}
		return 1;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	for (int i = 0; i < m; i++)
		cin >> b[i];
	sort(a, a + n);
	sort(b, b + m);
	/*for (int i = 0; i < n; i++)
		cout << a[i] << " ";
	cout << endl;
	for (int i = 0; i < m; i++)
		cout << b[i] << " ";
	cout << endl;*/
	ll l = -1, r = infint + 1;
	while(r - l > 1)
	{
		ll mid = (l + r) >> 1;
		if(check(mid))
			r = mid;
		else
			l = mid;
	}
	cout << r;
}
#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...
#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...