2 条题解

  • 1
    @ 2023-10-4 17:23:16
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct score{
    int c,m,e,a,i;//定义struct类,c语文,m数学,e英语,a总分,i学号
    };
    score s[301];
    bool cmp(score x,score y){//定义比较器,待sort使用
    bool q=0;
    if(x.a>y.a) q=1;
    else if(x.a==y.a&&x.c>y.c) q=1;
    else if(x.a==y.a&&x.c==y.c&&x.i<y.i) q=1;
    return q;
    }
    int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){//读入信息,计算总分
    cin>>s[i].c>>s[i].m>>s[i].e;
    s[i].i=i+1;
    s[i].a=s[i].c+s[i].m+s[i].e;
    }
    sort(s,s+n,cmp);//按比较器cmp规则排序
    for(int i=0;i<5;i++)
    cout<<s[i].i<<" "<<s[i].a<<endl;
    }
    
    • 1
      @ 2023-9-24 16:32:04

      建议用swap,会方便不少

      #include<iostream>
      using namespace std;
      int a[310],b[310],d[310],n,x,y;
      int main()
      {
          cin>>n;
          for(int i=1;i<=n;i++)
          	b[i]=i;	
          for(int i=1;i<=n;i++)
      	{
              cin>>a[i]>>x>>y;
              d[i]=a[i]+x+y;
          }
          for(int i=1;i<=n-1;i++)
          {
              for(int j=1;j<=n-i;j++)
              if(d[j]<d[j+1]||(d[j]==d[j+1]&&a[j]<a[j+1])) 
      		{
      			swap(d[j],d[j+1]);
      			swap(a[j],a[j+1]);
      			swap(b[j],b[j+1]);
      		}
          }
          for(int i=1;i<=5;i++)
              cout<<endl<<b[i]<<" "<<d[i];
          return 0;
      }
      
      • 1

      信息

      ID
      155
      时间
      1000ms
      内存
      125MiB
      难度
      5
      标签
      递交数
      117
      已通过
      44
      上传者