排名 模拟题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int N, M, G;
int g[20];
struct node {
int num[20];
char name[50];
int n;
int sum;
}T[1010];
/*
int cmp(node a, node b)
{
if (a.sum != b.sum )
return a.sum - b.sum;
return strcmp(a.name,b.name);
}
*/
int cmp(const void *a ,const void *b)
{
if ( (*(node *)a).sum != (*(node *)b).sum )
return (*(node *)a).sum < (*(node *)b).sum ? 1 : -1;
return strcmp( (*(node *)a).name, (*(node *)b).name);
}
int main( )
{
int P, i, j;
while(scanf("%d", &N), N) {
scanf("%d%d", &M, &G);
P = 0;
memset(T, 0, sizeof(T));
for (i = 1; i <= M; i++)
scanf("%d", &g[i]);
for (i = 0; i < N; i++) {
scanf("%s",T[i].name);
scanf("%d", &T[i].n);
T[i].sum = 0;
for (j = 0; j < T[i].n; j++) {
scanf("%d", &T[i].num[j]);
T[i].sum += g[T[i].num[j]];
}
}
qsort(T, N,sizeof(T[0]),cmp);
for (i = 0; i < N; i++)
if (T[i].sum >= G)
P++;
printf("%d\n",P);
for (i = 0; i < P; i++)
printf("%s %d\n",T[i].name,T[i].sum);
}
return 0;
}
posted on 2011-07-20 11:18 more think, more gains 阅读(132) 评论(0) 编辑 收藏 举报