[SEERC2019] Absolute Game
题目描述
Alice 和 Bob 在玩一个游戏。Alice 有一个包含 n n n 个整数的数列 a a a,Bob 有一个包含 n n n 个整数的数列 b b b。每一回合中,玩家需要从他的数列中删去一个数字。玩家轮流进行回合,Alice 先手。
当两个数列中都只剩下一个数字的时候,游戏结束。令 Alice 的数列剩下的数字为 x x x,Bob 的数列剩下的数字为 y y y。Alice 想要最大化 x x x 与 y y y 之差的绝对值,而 Bob 想最小化这个值。两个玩家都以最优策略游戏。
请算出游戏结束时的结果。
输入格式
第一行包含一个整数 n ( 1 ≤ n ≤ 1 000 ) n \ (1 \leq n \leq 1 \ 000) n (1≤n≤1 000),代表每个数列中的数字个数。
第二行包含 n n n 个整数 a 1 , a 2 , … , a n ( 1 ≤ a i ≤ 1 0 9 ) a_1, a_2, \dots, a_n \ (1 \leq a_i \leq 10^9) a1,a2,…,an (1≤ai≤109),代表 Alice 的数列中的数字。
第三行包含 n n n 个整数 b 1 , b 2 , … , b n ( 1 ≤ b i ≤ 1 0 9 ) b_1, b_2, \dots, b_n \ (1 \leq b_i \leq 10^9) b1,b2,…,bn (1≤bi≤109),代表 Bob 的数列中的数字。
输出格式
输出当两个玩家都以最优策略游戏时, x x x 与 y y y 之差的绝对值。
样例 #1
样例输入 #1
4
2 14 7 14
5 10 9 22
样例输出 #1
4
样例 #2
样例输入 #2
1
14
42
样例输出 #2
28
提示
第一个样例中, x = 14 , y = 10 x=14, y=10 x=14,y=10,因此两个数之差为 4 4 4。
第二个样例中,两个数列都只剩下一个数字了,因此
x
=
14
,
y
=
42
x=14, y=42
x=14,y=42。
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=2e3+5;
int n,a[N],b[N];
void solve(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
int ans=0;
for(int i=1;i<=n;i++){
int mx=0x3f3f3f3f;
for(int j=1;j<=n;j++) mx=min(mx,abs(a[i]-b[j]));
ans=max(ans,mx);
}
cout<<ans;
}
signed main(){
int t=1;
// scanf("%lld",&t);
while(t--) solve();
return 0;
}