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;
}
有人知道怎么做吗?或者可以改一下我的代码,讲思路可以尽量详细一点。~~最好直接上代码~~