zoukankan      html  css  js  c++  java
  • codeforces297B

    Fish Weight

     CodeForces - 297B 

    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.

    Examples

    Input
    3 3 3
    2 2 2
    1 1 3
    Output
    YES
    Input
    4 7 9
    5 2 7 3
    3 5 2 7 3 8 7
    Output
    NO

    Note

    In the first sample, if w1 = 1, w2 = 2, w3 = 2.5, then Alice has a total of 2 + 2 + 2 = 6weight units, while Bob only has 1 + 1 + 2.5 = 4.5.

    In the second sample, the fish that Alice caught is a subset of Bob's. Therefore, the total weight of Bob’s fish is always not less than the total weight of Alice’s fish.

    sol:贪心乱搞,先后后缀和只要个数大于另一个就是YES了

    #include <bits/stdc++.h>
    using namespace std;
    typedef int ll;
    inline ll read()
    {
        ll s=0;
        bool f=0;
        char ch=' ';
        while(!isdigit(ch))
        {
            f|=(ch=='-'); ch=getchar();
        }
        while(isdigit(ch))
        {
            s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
        }
        return (f)?(-s):(s);
    }
    #define R(x) x=read()
    inline void write(ll x)
    {
        if(x<0)
        {
            putchar('-'); x=-x;
        }
        if(x<10)
        {
            putchar(x+'0'); return;
        }
        write(x/10);
        putchar((x%10)+'0');
        return;
    }
    #define W(x) write(x),putchar(' ')
    #define Wl(x) write(x),putchar('
    ')
    const int N=100005;
    int n,m,K,a[N],b[N],Hash[N<<1];
    int main()
    {
        int i;
        R(n); R(m); R(K);
        for(i=1;i<=n;i++) Hash[++*Hash]=(a[i]=read());
        for(i=1;i<=m;i++) Hash[++*Hash]=(b[i]=read());
        sort(Hash+1,Hash+*Hash+1);
        *Hash=unique(Hash+1,Hash+*Hash+1)-Hash-1;
        for(i=1;i<=n;i++) a[i]=lower_bound(Hash+1,Hash+*Hash+1,a[i])-Hash;
        for(i=1;i<=m;i++) b[i]=lower_bound(Hash+1,Hash+*Hash+1,b[i])-Hash;
        sort(a+1,a+n+1);
        sort(b+1,b+m+1);
        int Now=m+1;
        for(i=n;i>=1;i--)
        {
            while(Now>1&&b[Now-1]>=a[i]) Now--;
            if(n-i+1>m-Now+1) return puts("YES"),0;
        }
        puts("NO");
        return 0;
    }
    /*
    Input
    3 3 3
    2 2 2
    1 1 3
    Output
    YES
    
    Input
    4 7 9
    5 2 7 3
    3 5 2 7 3 8 7
    Output
    NO
    */
    View Code
  • 相关阅读:
    PL/SQL中判断字段为空
    ArrayList知识详解
    那些碰到过的异常
    Java中的==和equals( )方法
    String,StringBuilder和StringBuffer
    树莓派3b+_32位linux系统arm架构安装JDK
    [杂]右键拷贝文件路径
    [023]模板成员函数为什么不能是虚函数
    [杂]几个好玩的网址
    [022]c++虚函数、多态性与虚表
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/10803551.html
Copyright © 2011-2022 走看看