https://www.luogu.org/problemnew/show/P1051
这个根本就不用排序啊……
#include<bits/stdc++.h> using namespace std; #define ll long long int n; struct P{ char name[25]; int f; int c; char s[5]; char w[5]; int p; int idx; int money; void calc(){ money=0; if(p&&f>80) money+=8000; if(f>85&&c>80) money+=4000; if(f>90) money+=2000; if(w[0]=='Y'&&f>85) money+=1000; if(s[0]=='Y'&&c>80) money+=850; } bool operator<(P p){ if(money==p.money) return idx<p.idx; else return money>p.money; } }p[105]; int main(){ scanf("%d",&n); int sum=0; int maxmoney=-1; int maxi=0; for(int i=0;i<n;i++){ scanf("%s%d%d%s%s%d",p[i].name,&p[i].f,&p[i].c,p[i].s,p[i].w,&p[i].p); p[i].idx=i; p[i].calc(); sum+=p[i].money; if(p[i].money>maxmoney){ maxi=i; maxmoney=p[i].money; } } //sort(p,p+n); //printf("%s %d ",p[0].name,p[0].money); printf("%s %d %d ",p[maxi].name,p[maxi].money,sum); }