对“到文件结束”理解
代码:
#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; }
时间: 2024-10-23 09:15:31