CodeForces

来源:互联网 发布:无root一键免流软件 编辑:程序博客网 时间:2024/06/07 04:48

A. Arrays
time limit per test2 seconds
memory limit
per test256 megabytes
inputstandard input
outputstandard output
You are given two arrays A and B consisting of integers, sorted in non-decreasing order. Check whether it is possible to choose k numbers in array A and choose m numbers in array B so that any number chosen in the first array is strictly less than any number chosen in the second array.

Input
The first line contains two integers nA, nB (1 ≤ nA, nB ≤ 105), separated by a space — the sizes of arrays A and B, correspondingly.

The second line contains two integers k and m (1 ≤ k ≤ nA, 1 ≤ m ≤ nB), separated by a space.

The third line contains nA numbers a1, a2, … anA ( - 109 ≤ a1 ≤ a2 ≤ … ≤ anA ≤ 109), separated by spaces — elements of array A.

The fourth line contains nB integers b1, b2, … bnB ( - 109 ≤ b1 ≤ b2 ≤ … ≤ bnB ≤ 109), separated by spaces — elements of array B.

Output
Print “YES” (without the quotes), if you can choose k numbers in array A and m numbers in array B so that any number chosen in array A was strictly less than any number chosen in array B. Otherwise, print “NO” (without the quotes).

Examples
input
3 3
2 1
1 2 3
3 4 5
output
YES
input
3 3
3 3
1 2 3
3 4 5
output
NO
input
5 2
3 1
1 1 1 1 1
2 2
output
YES
Note
In the first sample test you can, for example, choose numbers 1 and 2 from array A and number 3 from array B (1 < 3 and 2 < 3).

In the second sample test the only way to choose k elements in the first array and m elements in the second one is to choose all numbers in both arrays, but then not all the numbers chosen in A will be less than all the numbers chosen in B: .

题意:

a数组取k个数
b数组取m个数
问是否存在一种取法能够使得所有a数组取出的数严格小于b数组取出的数

那就两个sort一下a取最小的k个,b取最大的m个比较一下大小就好啦。后来发向他都给你。。。排序好了。。。
一个if解决。。签到题。。

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;typedef long long LL;const int maxn=1e5+5;int a[maxn],b[maxn],na,nb,m,k;int main(){  while(~scanf("%d%d",&na,&nb))  {    scanf("%d%d",&k,&m);    for(int i=1;i<=na;++i)scanf("%d",a+i);    for(int i=1;i<=nb;++i)scanf("%d",b+i);    if(a[k]<b[nb-m+1])printf("YES\n");    else printf("NO\n");  }  return 0;}
原创粉丝点击