对“到文件结束”理解
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
char name[20];
int num;
int t;
void init()
{
t=0;
num=0;
}
};
int cmp(const node a,const node b)
{
if(a.num==b.num&&a.t==b.t)
{
return strcmp(a.name,b.name)<0;
}
else if(a.num==b.num)
{
return a.t<b.t;
}
else
{
return a.num>b.num;
}
}
int f(int n)
{
int ans=1;
while(n--)
{
ans=ans*10;
}
return ans;
}
node stu[10000];
char str[20];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==2)
{
int i=0;
while(~scanf("%s",stu[i].name))
{
stu[i].init();
for(int j=0;j<n;j++)
{
scanf("%s",str);
int len=strlen(str);
if(str[0]=='-'||str[0]=='0')
continue;
int len1=0;
for(int k=0;k<len;k++)
{
if(str[k]=='(')
{
len1=k;
break;
}
}
if(len1==0)
{
for(int k=0;k<len;k++)
{
stu[i].t=stu[i].t+(str[k]-'0')*f(len-k-1);
}
stu[i].num++;
}
else
{
for(int k=0;k<len1;k++)
{
stu[i].t=stu[i].t+(str[k]-'0')*f(len1-k-1);
}
int len2=len-len1-2;
int ttt=0;
for(int k=len1+1;k<len-1;k++)
{
ttt=ttt+(str[k]-'0')*f(len2-1);
len2--;
}
stu[i].t+=(ttt*m);
stu[i].num++;
}
}
i++;
}
sort(stu,stu+i,cmp);
for(int j=0;j<i;j++)
{
printf("%-10s %2d %4d\n",stu[j].name,stu[j].num,stu[j].t);
}
}
return 0;
}