PAT A 1025 PAT Ranking

耗尽温柔 提交于 2020-03-11 02:32:39
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;

struct Test{
    string reg;
    int score;
    int location;
    int rk,local_rk;
};

bool cmp(Test a,Test b)
{
    return a.score>b.score;
}

bool cmpx(Test a,Test b)
{
    if(a.score!=b.score)        return a.score>b.score;
    else                        return a.reg<b.reg;
}

int main()
{
    int n,k,i,j,cnt=0;
    vector<Test> vi;
    vector<Test> temp;
    Test test;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>k;
        cnt+=k;
        for(j=0;j<k;j++){
            cin>>test.reg>>test.score;
            test.location=i;
            temp.push_back(test);
        }
        sort(temp.begin(),temp.end(),cmp);
        temp[0].local_rk=1;
        vi.push_back(temp[0]);
        for(j=1;j<k;j++){
            if(temp[j].score==temp[j-1].score)  temp[j].local_rk=temp[j-1].local_rk;
            else                                temp[j].local_rk=j+1;
            vi.push_back(temp[j]);
        }
        temp.clear();
    }
    sort(vi.begin(),vi.end(),cmpx);
    vi[0].rk=1;
    for(i=1;i<cnt;i++){
        if(vi[i].score==vi[i-1].score)  vi[i].rk=vi[i-1].rk;
        else                            vi[i].rk=i+1;
    }
    cout<<cnt<<endl;
    for(i=0;i<cnt;i++){
        cout<<vi[i].reg<<' '<<vi[i].rk<<' '<<vi[i].location<<' '<<vi[i].local_rk<<endl;
    }
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!