把a,b排序,二分在b中找到第一个比a[k]大的位置,判断b中比a[k]大的数的个数是否满足题目要求
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int n1,n2;
int k,m;
int a[N],b[N];
int main()
{
cin >> n1 >> n2 >> k >> m;
for(int i = 1; i <= n1; ++i)cin >> a[i];
for(int i = 1; i <= n2; ++i)cin >> b[i];
sort(a+1,a+1+n1);
sort(b+1,b+1+n2);
int l = 1, r = n2;
while(l < r){
int mid = l + r >> 1;
if(b[mid] <= a[k])l = mid + 1;
else{
r = mid;
}
}
if(n2 - l + 1 >= m && b[l] > a[k])cout << "YES" << endl;
else
cout << "NO" << endl;
return 0;
}