Codeforces Round #180 (Div. 2) D. Fish Weight 贪心
D. Fish Weight
题目连接:
http://www.codeforces.com/contest/298/problem/D
Description
It is known that there are k fish species in the polar ocean, numbered from 1 to k. They are sorted by non-decreasing order of their weight, which is a positive number. Let the weight of the i-th type of fish be wi, then 0 < w1 ≤ w2 ≤ ... ≤ wk holds.
Polar bears Alice and Bob each have caught some fish, and they are guessing who has the larger sum of weight of the fish he/she's caught. Given the type of the fish they've caught, determine whether it is possible that the fish caught by Alice has a strictly larger total weight than Bob's. In other words, does there exist a sequence of weights wi (not necessary integers), such that the fish caught by Alice has a strictly larger total weight?
Input
The first line contains three integers n, m, k (1 ≤ n, m ≤ 105, 1 ≤ k ≤ 109) — the number of fish caught by Alice and Bob respectively, and the number of fish species.
The second line contains n integers each from 1 to k, the list of fish type caught by Alice. The third line contains m integers each from 1 to k, the list of fish type caught by Bob.
Note that one may have caught more than one fish for a same species.
Output
Output "YES" (without quotes) if it is possible, and "NO" (without quotes) otherwise.
Sample Input
3 3 3
2 2 2
1 1 3
Sample Output
YES
Hint
题意
有两个人,第一个人抓了n条鱼,第二个人抓了m条鱼
保证编号小的一定小于等于编号大的质量
问你第一个人的n条鱼质量之和,有没有可能比第二个人的m条鱼的质量之和大
题解:
直接从大到小排序就好了,然后扫一遍。
只要存在一条鱼,a[i]>b[i],那么就说明可以。
因为我此时只要让后面的鱼全部都为0千克就好了
代码
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
int a[maxn],b[maxn];
bool cmp(int A,int B)
{
return A>B;
}
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=m;i++)
scanf("%d",&b[i]);
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+m,cmp);
for(int i=1;i<=n;i++)
if(a[i]>b[i])
return puts("YES");
return puts("NO");
}