範例程式碼 uva10026

//uva10026
#include<cstdio>
#include<algorithm>

using namespace std;

struct job{
	int num;
	double fine_per_day;
};

bool cmp(struct job a, struct job b) {
	if(a.fine_per_day != b.fine_per_day)
		return a.fine_per_day > b.fine_per_day;
	else
		return a.num < b.num;
}

int main(void) {
	int total, num_job, day, i, j;
	double fine;
	struct job work[1001];

	scanf("%d", &total);
	for(j = 0; j < total; j++) {
		if(j)
			printf("\n");
		scanf("%d", &num_job);
		for(i = 0; i < num_job; i++) {
			scanf("%d%lf", &day, &fine);
			work[i].num = i + 1;
			work[i].fine_per_day = (double)fine / day;
		}
		sort(work, work+num_job, cmp);
		printf("%d", work[0].num);
		for(i = 1; i < num_job; i++) {
			printf(" %d", work[i].num);
		}
		printf("\n");
	}
	return 0;
}