AT_abc384_c [ABC384C] Perfect Standings 题解

· · 题解

把每个人的名字和做对的题放在结构体里,求出所有人的分数后,排个序即可。

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e;
struct node{
    string s;
    int score;
}st[105];
bool cmp(node a,node b){
    if(a.score!=b.score)
        return a.score>b.score;
    return a.s<b.s;
}
int main(){
    cin>>a>>b>>c>>d>>e;
    st[1].s="ABCDE";
    st[2].s="BCDE";
    st[3].s="ACDE";
    st[4].s="ABDE";
    st[5].s="ABCE";
    st[6].s="ABCD";
    st[7].s="CDE";
    st[8].s="BDE";
    st[9].s="ADE";
    st[10].s="BCE";
    st[11].s="ACE";
    st[12].s="BCD";
    st[13].s="ABE";
    st[14].s="ACD";
    st[15].s="ABD";
    st[16].s="ABC";
    st[17].s="DE";
    st[18].s="CE";
    st[19].s="BE";
    st[20].s="CD";
    st[21].s="AE";
    st[22].s="BD";
    st[23].s="AD";
    st[24].s="BC";
    st[25].s="AC";
    st[26].s="AB";
    st[27].s="E";
    st[28].s="D";
    st[29].s="C";
    st[30].s="B";
    st[31].s="A";
    st[1].score=a+b+c+d+e;
    st[2].score=b+c+d+e;
    st[3].score=a+c+d+e;
    st[4].score=a+b+d+e;
    st[5].score=a+b+c+e;
    st[6].score=a+b+c+d;
    st[7].score=c+d+e;
    st[8].score=b+d+e;
    st[9].score=a+d+e;
    st[10].score=b+c+e;
    st[11].score=a+c+e;
    st[12].score=b+c+d;
    st[13].score=a+b+e;
    st[14].score=a+c+d;
    st[15].score=a+b+d;
    st[16].score=a+b+c;
    st[17].score=d+e;
    st[18].score=c+e;
    st[19].score=b+e;
    st[20].score=c+d;
    st[21].score=a+e;
    st[22].score=b+d;
    st[23].score=a+d;
    st[24].score=b+c;
    st[25].score=a+c;
    st[26].score=a+b;
    st[27].score=e;
    st[28].score=d;
    st[29].score=c;
    st[30].score=b;
    st[31].score=a;
    sort(st+1,st+32,cmp);
    for(int i=1;i<=31;i++)
        cout<<st[i].s<<"\n";
}