#include<iostream>
using namespace std;
struct student{
char name[10];//存放学生名字
int sum;//解决的问题数
int time;//耗费的总时间
int solved[13];
};
int main(){
int n,m,i,x,j;
cin>>n>>m;
char b[10];
student a[1000];
int k=0;
while(cin>>b){
strcpy_s(a[k].name,b);
a[k].sum=0,a[k].time=0;
for(i=0;i<n;i++){//输入数据
cin>>a[k].solved[i];//存放分数
if(a[k].solved[i]>0){
a[k].time+=a[k].solved[i];
a[k].sum++;
}
//这时候数字肯定输入完了,轮到(了
if(getchar()=='('){//没想到这样就解决了这个问题
cin>>x;
a[k].time+=x*m;
getchar();//把右括号吸收掉
}
}
k++;
}
for(i=0;i<k;i++){//冒泡排序,要求全部满足,优先性
for(j=0;j<k-i-1;j++){//最大or最小的排最后
student t;//中间变量
if(a[j].sum<a[j+1].sum){//题数多在前
t=a[j],a[j]=a[j+1],a[j+1]=t;
}else if(a[j].sum==a[j+1].sum){//如果做题数不一样,则比较时间分
if(a[j].time>a[j+1].time){//时间分少在前面
t=a[j],a[j]=a[j+1];a[j+1]=t;
}else if(a[j].time==a[j+1].time){//如果时间分还一样就看姓氏字典序,小的在前面
if(a[j].name>a[j+1].name){
t=a[j],a[j]=a[j+1],a[j+1]=a[j];
}
}
}
}
}
for(i=0;i<k;i++){
printf("%-10s %2d %4d\n",a[i].name,a[i].sum,a[i].time);
}
system("pause");
return 0;
}
1.3.5
最新推荐文章于 2024-10-17 11:51:44 发布