#5. 牛人

【题目描述】

现在有n个人,每个人都有一个智力值和能力值。对于某一个人A来说,如果其它n-1个人中,没有人的智力值和能力值都比A高,则我们称A为“牛人”。反过来说,只要有一个人的智力值和能力值都比A高,则A就不是“牛人”了。 请统计共有多少个“牛人”。

【输入】

第一行只有一个整数n。 第二行,有n个以空格分隔的正整数,第i个正整数表示第i个人的智力值。 第三行,有n个以空格分隔的正整数,第i个正整数表示第i个人的能力值。

【输出】

输出仅有一行,该行只有一个整数,表示求得的“牛人”数。

【样例输入】

5
25 40 30 20 5
20 10 25 38 5

【样例输出】

3

【样例说明】

 第1人不是牛人,因为第3人的智力值和能力值都比第1人高;
 第2人是牛人,因为其它4人的智力值都不如第2人;
 第3人是牛人,因为第1、4、5三人的智力值都不如第3人,第2人的能力值不如第3人;
 第4人是牛人,因为其它四人的能力值都不如第4人;
 第5人不是牛人,因为其它四人的智力值和能力值都比第5人高;

【数据说明】

70%的数据,1≤n≤1000。

100%的数据,1≤n≤100000,所有人的智力值和工作能力值均不超过5000000000。

答案_

#include<bits/stdc++.h>
using namespace std;
struct cow{
    long long itl,abl;
}a[100010];
int n,ans;
long long maxn;
bool cmp(cow x,cow y){
    if(x.itl==y.itl)return x.abl<y.abl;
    else return x.itl>y.itl;
}
int main(void)
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        scanf("%lld",&a[i].itl);
    for(int i=1;i<=n;++i)
        scanf("%lld",&a[i].abl);
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;++i){
        if(a[i].abl>=maxn){
            maxn=a[i].abl;
            ++ans;
        }
    }
    printf("%d",ans);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

停暮_星月志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值