求助站外题
  • 板块灌水区
  • 楼主Davidben
  • 当前回复23
  • 已保存回复23
  • 发布时间2021/9/16 18:33
  • 上次更新2023/11/4 06:38:16
查看原帖
求助站外题
484468
Davidben楼主2021/9/16 18:33
dalao们好
题目描述
在一条数轴上,有N只奶牛,第i只奶牛的位置是X[i],第i只奶牛的体重是W[i],可能有多只奶牛在同一个位置,这时多只奶牛就像搭积木一样堆成一个塔,塔的高度就是同一位置上的奶牛的个数。在最高的塔(可能有多个最高塔)当中,哪个塔的奶牛重量总和最大?输出该最大值。

输入
第一行,一个整数N。 1 <= N <= 100000。 第二行,N个整数,第i个整数是X[i]。 1 <= X[i] <= 2000000000。 第三行,N个整数,第i个整数是W[i]。 1 <= W[i] <= 1000。

输出
一个整数。

样例输入
6 
1000000000 1500000000 1000000000 1500000000 10000000000 1500000000 
1 2 3 4 5 6 
样例输出
12
~~~

~~~

#include<bits/stdc++.h>
using namespace std;
const int qwq = 1e6+10;
struct cow {//结构体 
    int wei;
    int zhong;
}s[qwq];
bool cmp(cow a, cow b) {//判断 
    if(a.wei<b.wei)
        return a.wei < b.wei;
    else if(a.wei == b.wei)
        return a.zhong < b.zhong;
    return false;
}
int main() {
    int n;
    cin>>n;
    for(int i = 1; i <= n; i++) {
        scanf("%lld",&s[i].wei);
    }
    for(int i = 1; i <= n; i++) {
        cin>>s[i].zhong;
    }
    sort(s+1,s+1+n,cmp);
    int  maxn = s[n].wei;//排序后取最大值 
    int cnt = 0;
    for(int i = n;i >= 1;i--){
        if(s[i].wei == maxn){//判断 
            cnt = cnt + s[i].zhong;
        }else{
            break;
        }
    }
     cout<<cnt;
    return 0;
}
有人知道怎么做吗?或者可以改一下我的代码,讲思路可以尽量详细一点。~~最好直接上代码~~
2021/9/16 18:33
加载中...