#include<cstdio>#include<algorithm>#include<stdlib.h>#include<cstring>using namespace std;struct student{ int id; int score[6];//题号,分数 bool flag;//判断是否有输出过 int total; int solve; int rank;}st[10010];bool cmp(student x,student y){ if(x.total!=y.total) return x.total>y.total; else if(x.solve!=y.solve) return x.solve>y.solve; else return x.id<y.id;}int n,k,m;//人数,题数,提交数void init(){ for(int i=1;i<=n;i++) { st[i].id=i; memset(st[i].score,-1,sizeof(st[i].score)); st[i].flag=false; st[i].total=0; st[i].solve=0; st[i].rank=0; }}int main(){ int perfect[6]={0}; scanf("%d%d%d",&n,&k,&m); init(); for(int i=1;i<=k;i++) scanf("%d",&perfect[i]); int user_id,test_id,grade; for(int i=1;i<=m;i++) { scanf("%d%d%d",&user_id,&test_id,&grade); if(grade!=-1) { st[user_id].flag=true; } if(grade==perfect[test_id]&&st[user_id].score[test_id]<grade) { st[user_id].solve++; } if(st[user_id].score[test_id]<grade) { st[user_id].score[test_id]=grade; } if(grade==-1&&st[user_id].score[test_id]==-1) { st[user_id].score[test_id]=0; } } for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { if(st[i].score[j]!=-1) { st[i].total+=st[i].score[j]; } } } sort(st+1,st+n+1,cmp); st[1].rank=1; for(int i=2;i<=n&&st[i].flag==true;i++) { if(st[i].total==st[i-1].total) st[i].rank=st[i-1].rank; else st[i].rank=i; } for(int i=1;i<=n;i++) { if(st[i].flag!=false) { PRintf("%d %05d %d",st[i].rank,st[i].id,st[i].total); for(int j=1;j<=k;j++) { if(st[i].score[j]!=-1) printf(" %d",st[i].score[j]); else printf(" -"); } printf("/n"); } } system("pause"); return 0;}
新闻热点
疑难解答