1025 排序(vector存结构体)

来源:互联网 发布:nba2k17帅哥捏脸数据 编辑:程序博客网 时间:2024/05/21 05:58

竟然还有不足13位的id,要补0,怪不得最后一个测试点不过,,,

/*先把local的序排好,存到总的vector里再sort总的*/#include<cstdio>#include<cstring>#include<iostream>#include<vector>#include<algorithm>using namespace std;int temp[1005],a[1005];struct student{    int score,loc,locrank,finrank;    long long id;};//先对score排,再对id排bool cmp1(student a,student b){    if(a.score!=b.score)        return a.score>b.score;    else        return a.id<b.id;}int main() {    int n,k;    scanf("%d",&n);    vector<student> stu;  //vector存结构体    for(int i=0;i<n;i++){        cin>>k;        vector<student> v(k);        for(int j=0;j<k;j++){            cin>>v[j].id;            cin>>v[j].score;            v[j].loc=i+1;        }        sort(v.begin(),v.end(),cmp1);        v[0].locrank=1;        stu.push_back(v[0]);        for(int j=1;j<k;j++){             //!!!有并列成绩的处理方法            v[j].locrank=(v[j].score==v[j-1].score)?v[j-1].locrank:(j+1);            stu.push_back(v[j]);        }    }    sort(stu.begin(),stu.end(),cmp1);    stu[0].finrank=1;    for(int i=1;i<stu.size();i++)        stu[i].finrank=(stu[i].score==stu[i-1].score)? stu[i-1].finrank :(i+1);    cout<<stu.size()<<endl;    for(int i=0;i<stu.size();i++)       printf("%013lld %d %d %d\n", stu[i].id,stu[i].finrank,stu[i].loc,stu[i].locrank);    return 0;}


原创粉丝点击