Bush 0 0
这题就是个结构体排序
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct date
{
char str1[100];
char str2[100][100];
int finsco;
int ac;
}p[10000];
bool cmp(date a,date b)
{
if(a.ac==b.ac&&a.finsco==b.finsco)
return strcmp(a.str1,b.str1)<0;
else if(a.ac==b.ac)
return a.finsco<b.finsco;
return a.ac>b.ac;
}
int main()
{
int n,score,cnt=0;
scanf("%d%d",&n,&score);
getchar();
while(~scanf("%s",p[cnt].str1))
{
int sum=0,ac=0;
for(int i=0;i<n;i++)
{
scanf("%s",p[i].str2[i]);
if(p[i].str2[i][0]=='-'||p[i].str2[i][0]=='0')
continue;
else
{
int flag=0,d=0,b=0;
ac++;
for(int k=0;p[i].str2[i][k]!='\0';k++)
{
if(p[i].str2[i][k]=='(')
{
flag++;
sscanf(p[i].str2[i],"%d(%d)",&d,&b);
sum+=d+b*score;
break;
}
}
if(flag==0)
{
sscanf(p[i].str2[i],"%d",&d);
sum+=d;
}
}
}
p[cnt].finsco=sum;
p[cnt++].ac=ac;
}
sort(p,p+cnt,cmp);
for(int i=0;i<cnt;i++)
printf("%-10s %2d %4d\n",p[i].str1,p[i].ac,p[i].finsco);
return 0;
}
原文:http://blog.csdn.net/a73265/article/details/46384261