题目地址:http://ac.jobdu.com/problem.php?pid=1014
C语言源码:
#include<stdio.h>
#include<string.h>
int main()
{
int score[1000],add[1000],que[11],n,m,line,i,j,x,sum,k;
char name[1000][21];
scanf("%d",&n);
while(n)
{
scanf("%d %d",&m,&line);
for(i=1;i<=m;i++)
scanf("%d",&que[i]);
for(i=0;i<n;i++)
{
getchar();
scanf("%s",name[i]);
scanf("%d",&k);
sum=0;
while(k)
{
k--;
scanf("%d",&x);
sum+=que[x];
}
score[i]=sum;
}
for(i=0;i<n;i++)
add[i]=i;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(name[add[j]],name[add[j+1]])>0)
{
x=add[j];
add[j]=add[j+1];
add[j+1]=x;
}
}
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(score[add[j]]<score[add[j+1]])
{
x=add[j];
add[j]=add[j+1];
add[j+1]=x;
}
}
}
i=n-1;
while(i>=0&&score[add[i]]<line)
i--;
if(i<0)
printf("0\n");
else
{
printf("%d\n",i+1);
j=0;
while(j<=i)
{
printf("%s %d\n",name[add[j]],score[add[j]]);
j++;
}
}
scanf("%d",&n);
}
}