题意:给两个数组a和b,可以进行任意次操作:交换a[i]和b[i],问能否使得a[n]和b[n]分别是数组a和b的最大值
思路:遍历数组a和b,如果有b[i]或a[i](i<n)数大于b[n]或a[n] ,那就一定要交换 ,所以要交换时,比较一下a[i]是否大于b[n] b[i]是否大于a[n] 只要有一个不满足 就输出"NO" ,当然,如果出现上述情况,也可以尝试交换a[n]与b[n] 也一样可以用上述方法判断.
代码
#include <iostream>
using namespace std;
const int N=1e2+1;
int a[N];
int b[N];
void solve();
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
void solve() {
int n;
cin>>n;
for (int i = 1; i <= n; ++i) cin>>a[i];
for (int i = 1; i <= n; ++i) cin>>b[i];
for(int i=1;i<=n;i++) {
if (a[i] > a[n] || b[i] > b[n]) {
if (b[i] > a[n] || a[i] > b[n]){
cout << "NO\n";
return ;
}
}
}
cout<<"YES\n";
}