问题标题: 酷町堂:1485 @李奕歌

0
0
已解决
谭迪元
谭迪元
资深光能
资深光能

题目描述 Description

酷町堂举办了一次阶段测试,测试总共有4题,该次阶段测试共有n位同学参加,每位同学的姓名、年龄以及每一道题目对应的得分已知,请聪明的你帮酷町堂做一个教务****,分别输出每位同学姓名、年龄、以及每位同学的总分,并在最后一行输出总数最高的同学姓名,如果总分一样,则输出最高分中最先输入的学生姓名。

输入描述 Input Description

输入为n+1行:
第一行为参加测试的学生数n(n≤100);
之后的n行,每一行分别为每位同学的姓名、年龄以及每一题对应的得分,中间用单个空格隔开;

输出描述 Output Description

输出为n+1行:
前n行为每位同学的姓名、年龄以及该同学得到的总分,中间用单个空格隔开;
最后一行为总分最高同学的姓名,如果总分一样,则输出最高分中最先输入的学生姓名。

样例输入 Sample Input

3

Zhangsan 12 100 90 80 50

Lisi 12 50 80 50 60

Wangwu 13 90 100 50 80

样例输出 Sample Output

Zhangsan 12 320

Lisi 12 240

Wangwu 13 320

Zhangsan

条件一样(思路或代码)

谭迪元在2021-09-17 19:11:53追加了内容
#include<bits/stdc++.h>
using namespace std;
struct P{
	string name;
	int age;
	int w,x,y,z;
	int sum(){
		return w+x+y+z;
	}
}a[105]; 
bool cmp(P x,P y){
	return x.sum()>y.sum();
}
int main(){
	int n,maxn=-0x3f3f3f3f;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].name>>a[i].age>>a[i].w>>a[i].x>>a[i].y>>a[i].z;
	}
	for(int i=1;i<=n;i++){
		if(i==n){
			cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum();
			break;
		}
		cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum()<<endl;
	}
	cout<<endl;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(a[i].sum()==a[i+1].sum()){
			cout<<a[i].name;
			return 0;
		}
	}
	return 0;
}

WA0,样例过了


0
已采纳
李显晨
李显晨
中级启示者
中级启示者

核心:

cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].s>>a[i].y>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
        a[i].pos=i;
    }
    for(int i=1;i<=n;i++) cout<<a[i].s<<" "<<a[i].y<<" "<<a[i].sum()<<endl;
    sort(a+1,a+n+1,cmp);
    cout<<a[1].s;

结构体:

struct stu{
    string s;
    int y,a,b,c,d,pos;
    int sum(){
        return a+b+c+d;
    }
}a[110];

函数:

bool cmp(stu x,stu y){
    if(x.sum()!=y.sum()) return x.sum()>y.sum();
    return x.pos<y.pos;
}

 

0
0
吕梓瑜
吕梓瑜
初级天翼
初级天翼

cmp函数不对,改成:

bool cmp(P x,P y){
    if(x.sum()!=y.sum())return x.sum()>y.sum();
    return x.id<y.id;
}

定义一个id,输入时写:

a[i].id=i;

0
李奕歌
李奕歌
初级天翼
初级天翼

核心:

struct hh{
    string name;
    int age;
    int a,b,c,d,id;
    int sum(){
        return a+b+c+d;
    }
}a[105];
bool cmp(hh x,hh y){
    if(x.sum()!=y.sum())
        return x.sum()>y.sum();
    return x.id<y.id;
}



cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].age>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
        a[i].id=i;
    }
    for(int i=1;i<=n;i++){
        cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].sum()<<"\n";
    }
    sort(a+1,a+n+1,cmp);
    cout<<a[1].name;

 

我要回答