排名 模拟题

#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编辑  收藏  举报

导航