#include <iostream>
#include <algorithm>
using namespace std;
int v1[100005],v2[100005],n,m,sol;
void cb(int st,int dr){
if(st>dr)
return;
int mid=(st+dr)/2;
int point=1;
for(int i=1;i<=n;i++){
while(abs(v1[i]-v2[point])>mid){
point++;
if(point==m+1){
cb(mid+1,dr);
return;
}
}
point++;
}
sol=mid;
cb(st,mid-1);
}
int main()
{
cin>>n>>m;
if(n>m){
for(int i=1;i<=n;i++){
cin>>v2[i];
}
for(int i=1;i<=m;i++){
cin>>v1[i];
}
swap(n,m);
}
else{
for(int i=1;i<=n;i++){
cin>>v1[i];
}
for(int i=1;i<=m;i++)
cin>>v2[i];
}
sort(v1+1,v1+n+1);
sort(v2+1,v2+m+1);
cb(0,1000000005);
cout<<sol;
return 0;
}
/*
4 3
2 39 41 45
39 42 46
2 3
2 3
1 2 3
5 5
7 6 1 2 10
9 11 6 3 12
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
135 ms |
2680 KB |
Output is correct |
2 |
Correct |
166 ms |
2884 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
164 ms |
2928 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
380 KB |
Output is correct |
2 |
Correct |
10 ms |
508 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
376 KB |
Output is correct |
2 |
Correct |
24 ms |
504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
8 ms |
376 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
376 KB |
Output is correct |
2 |
Correct |
10 ms |
444 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
380 KB |
Output is correct |
2 |
Correct |
11 ms |
504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
143 ms |
2452 KB |
Output is correct |
2 |
Correct |
158 ms |
1912 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
149 ms |
2552 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
138 ms |
2432 KB |
Output is correct |
2 |
Incorrect |
143 ms |
2588 KB |
Output isn't correct |