【PAT】1075. PAT Judge

来源:互联网 发布:固定收益 经典知乎 编辑:程序博客网 时间:2024/04/25 07:52
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Person{    int score[6];    int sum;    int id;    int perfect;    bool flag;}person[10001];bool cmp(Person a,Person b){    if(a.sum!=b.sum) return a.sum>b.sum;    else if(a.perfect!=b.perfect) return a.perfect>b.perfect;    else return a.id<b.id;}int main(){        int n,k,m;    cin>>n>>k>>m;    int p[6];    for(int i=1;i<=k;i++)        cin>>p[i];    int num=0;    for(int i=0;i<n;i++){        person[i].id=i+1;        person[i].sum=0;        memset(person[i].score,-1,sizeof(person[i].score));        person[i].perfect=0;        person[i].flag=false;    }        for(int i=0;i<m;i++){        int id,pid,gscore;        scanf("%d%d%d",&id,&pid,&gscore);        if(gscore==p[pid] && person[id-1].score[pid]<p[pid]) person[id-1].perfect++;        if(gscore!=-1) person[id-1].flag=true;        if(gscore==-1 && person[id-1].score[pid]==-1) person[id-1].score[pid]=0;        else person[id-1].score[pid]=max(gscore,person[id-1].score[pid]);    }        for(int i=0;i<n;i++){        for(int j=1;j<=k;j++){            if(person[i].score[j]!=-1)                person[i].sum+=person[i].score[j];        }    }        sort(person,person+n,cmp);    int r=1;    for(int i=0;person[i].flag&& i<n;i++){           if(i>0 && person[i].sum!=person[i-1].sum)                r=i+1;           printf("%d %05d %d",r,person[i].id,person[i].sum);           for(int j=1;j<=k;j++)               if(person[i].score[j]==-1) cout<<" "<<"-";               else cout<<" "<<person[i].score[j];            cout<<endl;    }        return 0;}
用for初始化-1不知为何运行有问题,用memset后直接解决了
0 0
原创粉丝点击