您的位置:首页 > 其它

hdu 1.3.2 排名

2015-11-07 21:40 204 查看
/*排名*/

#include <cstdio>

#include<cstring>

using namespace std;

struct infor

{

char name[25];//编号

int n;//做出题的个数

int bianhao[15];//做出题的编号

int goal;//得到的分数

};

int main()

{

int N=0,M=0,G=0;

int sorce[15];//记录每道题的分数

struct infor In[1005];

while(scanf("%d",&N)==1&&N!=0)

{

scanf("%d%d",&M,&G);

for(int i=0;i<M;i++)

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

int sum,num=0;

for(int j=0;j<N;j++)

{

scanf("%s",In[j].name);

scanf("%d",&In[j].n);

for(int i=0;i<In[j].n;i++)

scanf("%d",&In[j].bianhao[i]);

sum=0;

if(In[j].n>=0)

{

for(int u=0;u<In[j].n;u++)//计算得分

sum=sum+sorce[In[j].bianhao[u]-1];

if(sum>=G)

num++;

In[j].goal=sum;

}

else In[j].goal=0;

}

if(num)

{

struct infor A;

int index;

for(int i=0;i<N;i++)//对分数进行排序

{

index=i;

for(int j=i+1;j<N;j++)

if(In[index].goal<In[j].goal)

index=j;

A=In[index];

In[index]=In[i];

In[i]=A;

}

for(int r=0;r<N-1;r++)//把相同分数的按照考号排序

for(int q=0;q<N-1;q++)

if(In[q].goal==In[q+1].goal&&strcmp(In[q].name,In[q+1].name)>0)

{

A=In[q];

In[q]=In[q+1];

In[q+1]=A;

}

printf("%d\n",num);

for(int j=0;j<N;j++)//输出结果

if(In[j].goal>=G)

{

printf("%s %d\n",In[j].name,In[j].goal);

In[j].goal=0;

}

}

else

printf("%d\n",0);

}

return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: