- #include<stdio.h>
- int num[1100];
- int num2[1100];
- int num3[1100];
- void quicksort(int left,int right){
- int i,j,p,temp;
- if(left<right){
- p=(left+right)/2;
- i=left-1;
- j=right+1;
- while(i<j){
- while(num[++i]*num2[p]<num[p]*num2[i]&&i<j);
- while(num[--j]*num2[p]>num[p]*num2[j]&&i<j);
- if(i<j){
- if((num[i]*num2[j]!=num[j]*num2[i])||(num[i]*num2[j]==num[j]*num2[i]&&num3[i]>num3[j])){
- temp=num[i];
- num[i]=num[j];
- num[j]=temp;
- temp=num2[i];
- num2[i]=num2[j];
- num2[j]=temp;
- temp=num3[i];
- num3[i]=num3[j];
- num3[j]=temp;
- }
- }
- }
- quicksort(left,i-1);
- quicksort(j+1,right);
- }
- }
- int main(void){
- int n;
- int m,i,j;
- scanf("%d",&n);
- while(n--){
- scanf("%d",&m);
- for(i=0;i<m;i++){
- scanf("%d %d",&num[i],&num2[i]);
- num3[i]=i+1;
- }
- quicksort(0,m-1);
- for(i=0;i<m;i++){
- printf("%d ",num3[i]);
- }
- printf("\n");
- }
- getchar();
- return 0;
- }
Raw Paste