题目描述
这道题说的意思就是是否存在从a中选k个数都比从b中选m个数小
我们只要使得我们的a中选出k个数中的最大值小于从b中选的m个数的最小值小那么就成立了
所以我们将我们的a数组按升序排序
将b数组按降序排序
然后比较a[k-1]与b[m-1]值得大小
-
当a[k-1]<b[m-1] 就输出YES
-
当a[k-1]>b[m-1] 就输出NO即可
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N =1e5+10;
int a[N], b[N];
int main()
{
int n1, n2;
cin>>n1>>n2;
int k, m;
cin>>k>>m;
for(int i=0;i<n1;i++)
cin>>a[i];
for(int i=0;i<n2;i++)
cin>>b[i];
sort(a,a+n1);
sort(b,b+n2,greater<int>());
if(a[k-1]<b[m-1]) puts("YES");
else puts("NO");
return 0;
}