#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace Std;
struct Student
{
int ID;
int score[6];
int perfect;
int sum;
int rank;
}S[10066];
int p[6];//1-5 number 1-5 The score of the small question
BOOL CMP (Student a,student 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 ()
{
memset (s,0,sizeof (S));
int n,k,m;//n person, K-question, submission volume m
scanf ("%d%d%d", &n,&k,&m);
for (int i=1; i<=k; ++i)
scanf ("%d", &p[i]);//Deposit Score
for (int i=0; i<m; ++i)
{
int name,score,testnum;
scanf ("%d%d%d", &name, &testnum, &score);
S[name].score[testnum]=score;
if (Score==p[testnum])//This problem full score
++s[name].perfect;
if (score!=-1)
s[name].sum+=score;//Update Score
}
Sort (s,s+n,cmp);
s[0].rank=1;
for (int i=1; i<n; ++i)//Generate rank
{
if (S[i].score==s[i-1].score)//"Skill" score is different, ranked i+1; the same score, ranking or the previous one, unchanged
S[i].rank=s[i].rank;
Else
s[i].rank=i+1;
}
for (int i=0; i<n; ++i)//output
{
if (s[i].sum!=0)//The student has effective results
{
printf ("%d%05d", S[i].rank, s[i].id);
for (int j=1; j<=k; ++j)
{
if (s[i].score[j]!=-1)//Not-1 output score
printf ("%d", s[i].score[j]);
else//is-1, output "-"
printf ("-");
}
}
printf ("\ n");
}
return 0;
}
pat:1075. PAT Judge (25) Fried chicken Complex