CodeForces Round #180 (297B) Fish Weight

     由于是 0 < w1w2 ≤ ... ≤ 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;
}


原文地址:https://www.cnblogs.com/javawebsoa/p/3052945.html