题解~
2023-08-03 09:09:09
发布于:浙江
16阅读
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;
}
看在我这么努力的份上,点个赞吧
这里空空如也
有帮助,赞一个