题目描述
给定一个整数数组 A,其包含 n 个正整数 a1,a2,…,an 以及一个整数数组 B,其包含 m 个正整数 b1,b2,…,bm。
请从数组 A 中挑选一个元素 a 并从数组 B 中挑选一个元素 b,使得 a+b 既不包含于 A 也不包含于 B。
例如,如果 A=[2,1,7] 而 B=[1,3,4],则可以从 A 中选取 1,从 B 中选取 4,这样得到的数字 1+4=5 既不在 A 中,也不在 B 中。
但是,我们不能从 A 中选取 2,从 B 中选取 1,因为得到的数字 2+1=3 包含于 B。
可以证明这样的数对一定存在,如果答案不唯一则输出任意合理答案均可。
输入格式
第一行包含整数 n。
第二行包含 n 个整数 a1,…,an。
第三行包含整数 m。
第四行包含 m 个整数 b1,…,bm。
输出格式
共一行,输出 a 和 b,中间用空格隔开。
数据范围
对于 30% 的数据,1≤n,m≤10
对于 100% 的数据,1≤n,m≤100,1≤ai,bi≤200
输入样例1:
1
20
2
10 20
输出样例1:
20 20
输入样例2:
3
3 2 2
5
1 5 7 7 9
输出样例2:
3 1
输入样例3:
4
1 3 5 7
4
7 5 3 1
输出样例3:
1 1
题目分析
这道题数据范围比较小暴力搜索就可以
我们这里用个小技巧
两次遍历分别找出两个数组A中的最大值x和数组B中的最大值y
那么x+y一定即不再A中也不在B中
直接输出就可以了
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 210;
int n,m;
int main(){
cin>>n;
int x=0,y=0;
for(int i=1;i<=n;i++){
int a;
cin>>a;
x=max(x,a);
}
cin>>m;
for(int i=1;i<=m;i++){
int b;
cin>>b;
y=max(b,y);
}
cout<<x<<' '<<y<<endl;
return 0;
}