礼盒
2026-03-21 10:54:15
发布于:广东
17阅读
0回复
0点赞
题目分析
本题核心需求是对 n 个对象进行排序,每个对象有 u 个数值属性,需先计算每个对象的以下特征:
- 总和 s:u 个数值的累加和
- 最大值 a:u 个数值中的最大值
- 最小值 b:u 个数值中的最小值
- 编号 id:对象的唯一标识(从 1 开始)
排序优先级(均为升序):
1.总和 s → 优先级最高
2.最大值 a → 总和相同时生效
3.最小值 b → 总和、最大值均相同时生效
4.编号 id → 前三项均相同时生效
#include <bits/stdc++.h>
using namespace std;
struct N{
int id,s,a,b;
};
N m[10010];
bool cmp(N x,N y){
if(x.s!=y.s) return x.s<y.s;
if(x.a!=y.a) return x.a<y.a;
if(x.b!=y.b) return x.b<y.b;
return x.id<y.id;
}
int main(){
int n,u;
cin>>n>>u;
for(int i=1;i<=n;i++){
int k,su=0,maa=-0x3f,mii=0x3f;
for(int j=1;j<=u;j++){
cin>>k;
su+=k;
maa=max(maa,k);
mii=min(mii,k);
}
m[i].a=maa;
m[i].b=mii;
m[i].s=su;
m[i].id=i;
}
sort(m+1,m+n+1,cmp);
for(int i=1;i<=n;i++)cout<<m[i].id<<" ";
return 0;
}
这里空空如也







有帮助,赞一个