由于是 0 < w1 ≤ w2 ≤ ... ≤ wk....当B中排序最后的鱼序号有大于A排序最后的鱼...那么将B的这鱼重量和A当前最大的鱼定为相等..则这两条鱼的重量相抵消 .所以如果这么做..只要A还有鱼..就能保证每次B所有的总重量都不会大于A的总重量...这么抵消下去..一旦A有条鱼的序号大于B所剩的所有鱼..那么A就可以胜利了..因为可以令小于A这条鱼的所有鱼重量无穷小...
Program:
//http://codeforces.com/contest/297/problem/B #include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<algorithm> #include<map> #include<set> #include<queue> #define ll long long #define oo 1000000001 #define MAXN 400005 using namespace std; int n,m,k,a[100005],b[100005]; bool judge() { while (m && n && b[m]>=a[n]) m--,n--; if (n && (!m || a[n]>b[m])) return true; return false; } int main() { int i,j; while (~scanf("%d%d%d",&n,&m,&k)) { for (i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); for (i=1;i<=m;i++) scanf("%d",&b[i]); sort(b+1,b+1+m); if (judge()) printf("YES\n"); else printf("NO\n"); } return 0; }