不太适用排序算法,利用map容器的自排序就可以了
#include <bits/stdc++.h>
using namespace std;
int Sum[305][3]={0};
map<int,vector<int> >Count;
bool cmp(int a,int b){
if (Sum[a][0]>Sum[b][0])
return true;
else if (Sum[a][0]==Sum[b][0]){
if (a<b)
return true;
}
return false;
}
int main()
{
int N;
scanf("%d",&N);
for (int i = 0; i < N; ++i) {
int temp,sum=0;
for (int j = 0; j < 3; ++j) {
scanf("%d",&Sum[i][j]);
sum+=Sum[i][j];
}
Count[sum].push_back(i);
sort(Count[sum].begin(),Count[sum].end(),cmp);
}
int cnt=0;
for (auto i = Count.rbegin(); i !=Count.rend() ; ++i) {
if (cnt==5)
break;
auto sum=i->first;auto SerialNumber=i->second;
for (int j = 0; j < SerialNumber.size(); ++j) {
if (cnt==5)
break;
printf("%d %d\n",SerialNumber[j]+1,sum);
cnt++;
}
}
return 0;
}```