wangyifan090531 @ 2023-04-27 18:37:10
#include<bits/stdc++.h>
using namespace std;
int main()
{
int num[10000]={},cnn[1000]={},math[1000]={},eng[1000]={},all[100000]={};
int n=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>cnn[i]>>math[i]>>eng[i];
all[i]=cnn[i]+math[i]+eng[i];
num[i]=i;
}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
if(all[i]<all[j])
{
swap(all[i],all[j]);
swap(num[i],num[j]);
}
else if(all[i]==all[j])
{
if(cnn[i]<cnn[j])
{
swap(all[i],all[j]);
swap(num[i],num[j]);
}
else if(num[i]>num[j])
{
swap(all[i],all[j]);
swap(num[i],num[j]);
}
}
}
}
for(int i=1;i<=4;i++)
{
cout<<num[i]<<" "<<all[i]<<endl;
}
cout<<num[5]<<" "<<all[5];
}
by BianChengHu @ 2023-04-27 18:48:11
正解:
#include<bits/stdc++.h>
using namespace std;
struct node{
int id,ma,ch,en,an;
}stu[305];
int n;
bool cmp(node x,node y){
if(x.an!=y.an){
return x.an>y.an;
}
if(x.ch!=y.ch){
return x.ch>y.ch;
}
return x.id<y.id;
}
int main(){
cin>>n;
for(int i = 1; i <= n; i++){
cin>>stu[i].ch>>stu[i].ma>>stu[i].en;
stu[i].id=i;
stu[i].an=stu[i].ch+stu[i].ma+stu[i].en;
}
sort(stu+1,stu+n+1,cmp);
for(int i = 1; i <= 5; i++){
cout<<stu[i].id<<" "<<stu[i].an<<endl;
}
return 0;
}
by CBC18 @ 2023-06-24 09:57:44
我这还有个歪解:
#include<bits/stdc++.h>
using namespace std;
int n,num[305],chi[305],mat[305],eng[305],sum[305];
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>chi[i]>>mat[i]>>eng[i];
num[i]=i;
sum[i]=chi[i]+mat[i]+eng[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n-1;j++){
if(sum[j]<sum[j+1]){
swap(sum[j],sum[j+1]);
swap(chi[j],chi[j+1]);
swap(mat[j],mat[j+1]);
swap(eng[j],eng[j+1]);
swap(num[j],num[j+1]);
}else if(sum[j]==sum[j+1]){
if(chi[j]<chi[j+1]){
swap(sum[j],sum[j+1]);
swap(chi[j],chi[j+1]);
swap(mat[j],mat[j+1]);
swap(eng[j],eng[j+1]);
swap(num[j],num[j+1]);
}else if(chi[j]==chi[j+1]){
if(num[j]>num[j+1]){
swap(sum[j],sum[j+1]);
swap(chi[j],chi[j+1]);
swap(mat[j],mat[j+1]);
swap(eng[j],eng[j+1]);
swap(num[j],num[j+1]);
}
}
}
}
}
for(int i=1;i<=min(n,5);i++){
cout<<num[i]<<' '<<sum[i]<<"\n";
}
return 0;
}
手打冒泡排序,一样能A。