#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int id,sum,h[6],ok,well,r;
bool operator<(const node&x)const
{
if(ok!=x.ok) return ok>x.ok;
if(sum!=x.sum) return sum>x.sum;
if(well!=x.well) return well>x.well;
return id<x.id;
}
node(){sum=0,ok=0,well=0;fill(h,h+6,-1);}
}st[10005];
int main()
{
int n,m,k,full[6];
cin>>n>>k>>m;
for(int i=1;i<=k;++i)
cin>>full[i];
for(int t=0,a,b,c;t<m;++t)
{
scanf("%d%d%d",&a,&b,&c);
if(c==-1)
{
if(st[a].h[b]==-1) st[a].h[b]=0;
continue;
}
st[a].ok=1;
st[a].h[b]=max(st[a].h[b],c);
}
for(int i=1;i<=n;++i)
{
st[i].id=i;
for(int j=1;j<=k;++j)
{
st[i].sum+=max(0,st[i].h[j]);
st[i].well+=(st[i].h[j]==full[j]?1:0);
}
}
sort(st+1,st+n+1);
for(int i=1;i<=n;++i)
if(st[i].ok)
{
if(i==1||st[i].sum!=st[i-1].sum)
st[i].r=i;
else
st[i].r=st[i-1].r;
printf("%d %05d %d",st[i].r, st[i].id, st[i].sum);
for(int j=1;j<=k;++j)
{
if(st[i].h[j]==-1) printf(" -");
else printf(" %d",st[i].h[j]);
}
printf("\n");
}
return 0;
}
1075. PAT Judge
最新推荐文章于 2019-02-11 19:32:00 发布