比赛成绩筛选与排序

#include

#include

#include

#include

#include

using namespace std;

const int maxn=1010;

const int maxm=12;

int score[maxm];

struct Node

{

char name[22];

int m,g;

};

vectorvt;

bool cmp(Node a,Node b)

{

if(a.g==b.g)

{

return strcmp(a.name,b.name)<0;

}

else

{

return a.g>b.g;

}

}

int main()

{

int n,m,g;

while(scanf("%d",&n)!=EOF)

{

if(n==0)

{

break;

}

vt.clear();

scanf("%d%d",&m,&g);

for(int i=1;i<=m;i++)

{

scanf("%d",&score[i]);

}

for(int i=0;i

{

Node node;

scanf("%s",&node.name);

scanf("%d",&node.m);

node.g=0;

for(int i=0;i

{

int temp;

scanf("%d",&temp);

node.g+=score[temp];

}

if(node.g>=g)

{

vt.push_back(node);

}

}

sort(vt.begin(),vt.end(),cmp);

printf("%d\n",vt.size());

for(int i=0;i

{

printf("%s %d\n",vt[i].name,vt[i].g);

}

}

return 0;

}

/**************************************************************

Problem: 1014

User: cust123

Language: C++

Result: Accepted

Time:70 ms

Memory:1028 kb

****************************************************************/