转化一下就好啦,交叉相乘相互约掉一些相同的计算。
#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
struct T{
long long a,b,c;
int ind;
}t[100010];
bool cmp(T x,T y){
long long l=x.a*y.c+x.b*y.c;
long long r=y.a*x.c+y.b*x.c;
if(l==r) return x.ind<y.ind;
return l<r;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++){
cin>>t[i].a>>t[i].b>>t[i].c;
t[i].ind=i;
}
sort(t+1,t+1+n,cmp);
for(int i=1;i<=n;i++){
if(i!=1) printf(" ");
cout<<t[i].ind;
}
cout<<endl;
}
return 0;
}
京公网安备 11010502036488号