题解~
2023-08-03 09:09:09
发布于:浙江
18阅读
0回复
0点赞
正确示范:
#include<bits/stdc++.h>
using namespace std;
struct student{
	string s;
	int a,b,c,sum=0,sx;  //sx为输入顺序
	void go_in(){  //输入函数
		cin>>s>>a>>b>>c;
		sum=a+b+c;
	}
	void go_out(){//输出函数
		cout<<s<<" "<<sum<<"\n";
	}
}p[1000010];
bool cmp(student x,student y){
	if(x.sum!=y.sum){
		return x.sum>y.sum;
	}else if(x.a!=y.a){
		return x.a>y.a;
	}else if(x.b!=y.b){
		return x.b>y.b;
	}else{
		return x.sx<y.sx;
	}
}
错误示范:
#include<bits/stdc++.h>
using namespace std;
struct student{
	string s;
	int a,b,c,sum=0,sx;  //sx为输入顺序
	void go_in(){  //输入函数
		cin>>s>>a>>b>>c;
		sum=a+b+c;
	}
	void go_out(){//输出函数
		cout<<s<<" "<<sum<<"\n";
	}
}p[1000010];
bool cmp(student x,student y){
	if(x.sum!=y.sum){
		return x.sum>y.sum;
	}else if(x.a!=y.a){
		return x.a>y.a;
	}else if(x.b!=y.b){
		return x.b>y.b;
	}else{
		return x.sx>y.sx;//☚
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		p[i].go_in();
		p[i].sx=i;//存顺序
	}
	sort(p,p+n,cmp);
	for(int i=0;i<n;i++){
		p[i].go_out();
	}
	return 0;
}
正确示范(main):
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		p[i].go_in();
		p[i].sx=i;//存顺序
	}
	sort(p,p+n,cmp);
	for(int i=0;i<n;i++){
		p[i].go_out();
	}
	return 0;
}
错误示范:
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		p[i].go_in();//☚顺序未存
	}
	sort(p,p+n,cmp);
	for(int i=0;i<n;i++){
		p[i].go_out();
	}
	return 0;
}
全部代码:
#include<bits/stdc++.h>
using namespace std;
struct student{
	string s;
	int a,b,c,sum=0,sx;  //sx为输入顺序
	void go_in(){  //输入函数
		cin>>s>>a>>b>>c;
		sum=a+b+c;
	}
	void go_out(){//输出函数
		cout<<s<<" "<<sum<<"\n";
	}
}p[1000010];
bool cmp(student x,student y){
	if(x.sum!=y.sum){
		return x.sum>y.sum;
	}else if(x.a!=y.a){
		return x.a>y.a;
	}else if(x.b!=y.b){
		return x.b>y.b;
	}else{
		return x.sx<y.sx;
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		p[i].go_in();
		p[i].sx=i;//存顺序
	}
	sort(p,p+n,cmp);
	for(int i=0;i<n;i++){
		p[i].go_out();
	}
	return 0;
}
看在我这么努力的份上,点个赞吧
这里空空如也

有帮助,赞一个