L2-027 名人堂与代金券 (25 分)

水题~。

const int N=10010;
struct Node
{
    string name;
    int grade;
    int rank;
    bool operator<(const Node &W) const
    {
        if(grade != W.grade) return grade > W.grade;
        return name < W.name;
    }
}a[N];
int n,g,k;

int main()
{
    cin>>n>>g>>k;

    int sum=0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i].name>>a[i].grade;
        if(a[i].grade >= g) sum+=50;
        else if(a[i].grade >= 60) sum+=20;
    }

    sort(a,a+n);

    cout<<sum<<endl;
    for(int i=0;i<n;i++)
    {
        if(i && a[i].grade == a[i-1].grade)
            a[i].rank=a[i-1].rank;
        else
            a[i].rank=i+1;

        if(a[i].rank > k)
            break;
        else
            cout<<a[i].rank<<' '<<a[i].name<<' '<<a[i].grade<<endl;
    }
    
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14677011.html