您的位置:首页 > 其它

HDOJ1236 排名解题报告

2014-07-27 10:20 337 查看
题目很容易,要排序什么的 要二级排序,下面是代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Info
{
char num[21];
int solve[10];
int sum;
}Info;
int cmp(const void *a,const void *b)
{
int a1=((Info *)a)->sum,b1=((Info *)b)->sum;
if(a1!=b1)
return b1-a1;
else
return strcmp(((Info *)a)->num, ((Info *)b)->num);
}
int main()
{
int N,M,G;int score[10],m,index;
Info info[1000];
while(scanf("%d",&N))
{
if(N==0)break;
scanf("%d%d",&M,&G);

for(int i=0;i<M;i++)
scanf("%d",&score[i]);
index=0;
int flag=0;
for(int t=0;t<N;t++)
{
for(int g=0;g<21;g++)
info[t].num[g]='\0';
}
for(int j=0;j<N;j++)
{
scanf("%s",info[index].num);
scanf("%d",&m);
info[index].sum=0;
for(int k=0;k<m;k++)
{
scanf("%d",&info[index].solve[k]);
info[index].sum+=score[info[index].solve[k]-1];
}
if(info[index].sum>=G)
{
index++;
flag=1;
}
}

if(flag)
{
qsort(info,index,sizeof(info[0]),cmp);
printf("%d\n",index);
for(int y=0;y<index;y++)
{
printf("%s %d\n",info[y].num,info[y].sum);
}
}else{
printf("0\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: