70分求助

P1093 [NOIP2007 普及组] 奖学金

张ZYH @ 2022-01-27 12:52:35

rt

#include<bits/stdc++.h>
using namespace std;
long long n,a[10001],b[10001],c[10001],h[10001];
long long y[10001];
int main(){
    cin>>n;
    for(long long i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];
        y[i]=i;
        h[i]=a[i]+b[i]+c[i];
    }
    for(long long i=1;i<=n;i++){
        for(long long j=i+1;j<=n;j++){
            if(h[j]>h[i]){
                swap(h[j],h[i]);
                swap(y[j],y[i]);
            }
        }
    }
    for(long long i=1;i<=5;i++){
        cout<<y[i]<<" "<<h[i]<<endl;
    }
    return 0;
}

by waauto @ 2022-01-27 13:15:49

**同总分语文高的排在前面

同总分语文分同,学号小的在前面 这些都没写**

同时建议使用sort自定义排序,因为它的复杂度仅有nlogn


by qwq___qaq @ 2022-01-27 13:16:14

@张ZYH 排序方式错了

先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面


by 张ZYH @ 2022-01-27 13:51:09

@rain 结构体没学好


by 瞳_Jerry_0 @ 2022-02-19 12:11:09

不至于开long long数组,int就够了,long long还慢一些; 另外这个推荐使用结构体和sort排序函数(但是要编写一个cmp比较函数,不会用冒泡插入选择也可以,不过时间复杂度可达O(n²),sort只有O(nlogn))


|