第二个样例没过,其他都过了。。。
#include<bits/stdc++.h>
using namespace std;
int n;
struct Gm
{
int c, m, e, sum, s, mx, id, ip;
}a[100005];
bool cmp(Gm x, Gm y)
{
if(x.sum != y.sum)
{
return x.sum > y.sum;
}
else if(x.s != y.s)
{
return x.s > y.s;
}
else if(x.mx != y.mx)
{
return x.mx > y.mx;
}
return false;
}
bool Cmp(Gm x, Gm y)
{
return x.ip < y.ip;
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i].c >> a[i].m >> a[i].e;
a[i].ip = i;
a[i].sum = a[i].c + a[i].e + a[i].m;
a[i].s = a[i].c + a[i].m;
a[i].mx = max(a[i].m, a[i].c);
}
sort(a + 1, a + 1 + n, cmp);
for(int i = 1; i <= n; i++)
{
if(a[i - 1].sum == a[i - 1].sum && a[i - 1].s == a[i].s && a[i - 1].mx == a[i].mx)
{
a[i].id = a[i - 1].id;
}
else
{
a[i].id = i;
}
}
sort(a + 1, a + 1 + n, Cmp);
for(int i = 1; i <= n; i++)
{
cout << a[i].id << "\n";
}
return 0;
}