#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;
}
PAT 1075
最新推荐文章于 2021-02-02 17:49:37 发布