pat 1025

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

struct Node{
    string id;
    int score;
    int final_rank;
    int loc_num;
    int local_rank;
};
Node ranklist[30005];
int cmp(Node a,Node b){
    return a.score==b.score?a.id<b.id:a.score>b.score;
}
int n,k;
int main(){
    scanf("%d",&n);
    int len=0;
    for(int i=1;i<=n;i++){
        scanf("%d",&k);
        for(int j=len;j<k+len;j++){
            cin>>ranklist[j].id>>ranklist[j].score;
            ranklist[j].loc_num=i;
        }
        sort(ranklist+len,ranklist+len+k,cmp);
        for(int j=len;j<len+k;j++){
            if(j==len) ranklist[j].local_rank=1;
            else if(ranklist[j].score==ranklist[j-1].score)
                ranklist[j].local_rank=ranklist[j-1].local_rank;
            else
                ranklist[j].local_rank=j-len+1;
        }
        len+=k;
    }
    cout<<len<<endl;
    sort(ranklist,ranklist+len,cmp);
    for(int i=0;i<len;i++){
        if(i==0) ranklist[i].final_rank=1;
        else if(ranklist[i].score==ranklist[i-1].score)
            ranklist[i].final_rank=ranklist[i-1].final_rank;
        else
            ranklist[i].final_rank=i+1;
        cout<<ranklist[i].id<<" "<<ranklist[i].final_rank<<" "<<ranklist[i].loc_num<<" "<<ranklist[i].local_rank<<endl;
    }
    //system("pause");
    return 0;
}

你可能感兴趣的:(pat 1025)