不知道如何处理并列的情况……求助!
#include <iostream>
#include <algorithm>
using namespace std;
struct st
{
int name, c, m, e;
};
bool cmp(st, st);
int main()
{
int n, b[10005];
st s[10005];
cin >> n;
for(int i=1;i<=n;i++)
{
s[i].name=i;
cin >> s[i].c >> s[i].m >> s[i].e;
}
sort(s+1, s+n+1, cmp);
for(int i=1;i<=n;i++)
{
b[s[i].name]=i;
}
for(int i=1;i<=n;i++)
{
cout << b[i] << endl;
}
return 0;
}
bool cmp(st a, st b)
{
if(a.c+a.m+a.e!=b.c+b.m+b.e)
{
return a.c+a.m+a.e>b.c+b.m+b.e;
}
if(a.c+a.m!=b.c+b.m)
{
return a.c+a.m>b.c+b.m;
}
if(max(a.c, a.m)!=max(b.c, b.m))
{
return max(a.c, a.m)>max(b.c, b.m);
}
return false;
}