(水题)洛谷

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);
}
原文地址:https://www.cnblogs.com/Yinku/p/10317115.html