#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
using namespace std;
typedef pair <int, int> pii;
typedef long long ll;
const int NMAX = 100001;
const int VMAX = 41;
const int INF = 1e9;
const int MOD = 1000000009;
const int BLOCK = 318;
const int base = 31;
const int nrbits = 21;
int a[NMAX], b[NMAX];
int n, m;
int f(int poz)
{
if(poz + m - 1 > n) return 1e9;
int maxim = 0;
for(int i = 1; i <= m; i++){
maxim = max(maxim, abs(a[i + poz - 1] - b[i]));
}
return maxim;
}
bool OK(int x){
multiset <int> st;
int i;
for(i = 1; i <= n; i++)
st.insert(a[i]);
for(i = 1; i <= m; i++){
int nou = b[i] - x;
auto it = st.lower_bound(nou);
if(it != st.end() && abs((*it) - b[i]) <= x){
st.erase(it);
continue;
}
return 0;
}
return 1;
}
int main() {
#ifdef HOME
ifstream cin(".in");
ofstream cout(".out");
#endif // HOME
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int i;
cin >> n >> m;
for(i = 1; i <= n; i++)
cin >> a[i];
for(i = 1; i <= m; i++)
cin >> b[i];
sort(a + 1, a + n + 1);
sort(b + 1, b + m + 1);
if(m > n){
for(i = 1; i <= m; i++){
swap(a[i], b[i]);
}
swap(n, m);
}
int r = 0;
int pas = (1 << 30);
while(pas){
if(!OK(r + pas))
r += pas;
pas /= 2;
}
if(!OK(r)) r++;
cout << r;
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
680 ms |
5788 KB |
Output is correct |
2 |
Correct |
695 ms |
5796 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
666 ms |
5788 KB |
Output is correct |
2 |
Correct |
677 ms |
5780 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
340 KB |
Output is correct |
2 |
Correct |
24 ms |
612 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
15 ms |
616 KB |
Output is correct |
2 |
Correct |
19 ms |
608 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
20 ms |
612 KB |
Output is correct |
2 |
Correct |
26 ms |
596 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
19 ms |
596 KB |
Output is correct |
2 |
Correct |
19 ms |
600 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
19 ms |
608 KB |
Output is correct |
2 |
Correct |
21 ms |
596 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
566 ms |
5616 KB |
Output is correct |
2 |
Correct |
353 ms |
3564 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
519 ms |
5416 KB |
Output is correct |
2 |
Correct |
536 ms |
4988 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
531 ms |
5316 KB |
Output is correct |
2 |
Correct |
532 ms |
4980 KB |
Output is correct |