洛谷P5804 [SEERC2019]Absolute Game
链接:[SEERC2019]Absolute Game - 洛谷

思路:不管怎么找都会剩一个,既然如此就直接选一个留下来,每个数找一遍就行了,这个数满足的要求就是b组和它最近的两个数的最小绝对值在所有数中最大。
code:
#include<bits/stdc++.h>
using namespace std;
long long q1[1005],q2[1005];
int main(){
int t,x,y,z,max=0,ans=0;
scanf("%d",&t);
for(int i=1;i<=t;i++) scanf("%d",&q1[i]);
for(int i=1;i<=t;i++) scanf("%d",&q2[i]);
sort(q2+1,q2+t+1);
for(int i=1;i<=t;i++) {
z=lower_bound(q2+1,q2+t+1,q1[i])-q2;
if(z==1) {
if(max<q2[z]-q1[i]) max=q2[z]-q1[i];
}
else if(z>1&&z<=t){
if(max<q2[z]-q1[i]&&max<q1[i]-q2[z-1]) max=min(q2[z]-q1[i],q1[i]-q2[z-1]);
}
else if(z>t){
if(max<q1[i]-q2[z-1]) max=q1[i]-q2[z-1];
}
}
printf("%d",max);
}