题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6281
题意:
根据已给出的式子,进行排序,然后输出排完序后原先的下表。
题解:用结构体保存,在用结构体排序,利用stable_sort()稳定排序。因为会爆long long ,所以对式子进行转换。
代码:
#include<bits/stdc++.h> using namespace std; struct node{
int n;
long long a,b,c;
friend bool operator< (const node &a,const node &b){
return a.c*(b.a+b.b)>b.c*(a.a+a.b);
}
}num[]; int main(){
long long n,a,b,c;
while(~scanf("%lld",&n)){
for(int i=;i<=n;i++){
scanf("%lld%lld%lld",&a,&b,&c);
num[i].a=a,num[i].b=b,num[i].c=c;
num[i].n=i;
}
stable_sort(num+,num+n+);
for(int i=;i<=n;i++){
printf("%d%c",num[i].n,i==n?'\n':' ');
}
}
}
By Rvelamen