#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #define PR printf #define SC scanf #define D "%ld" int main() { struct brand { char name[100][20]; long p[100], q[100]; double score[100]; } phone, ans[100]; long t, i, j, k, m, n, f; char sp[2] = ""; long mid1; double mid2; char res[1000]; long des[100]; char tmp[30]; long num; long rankID; SC(D, &t); for (i = 0; i < t; i++) { SC(D, &num); for (j = 0; j < num; j++) { SC("%s", phone.name[j]); SC(D, &phone.p[j]); SC(D, &phone.q[j]); phone.score[j] = 1.0 * phone.p[j] / phone.q[j]; } for (m = 0; m < num - 1; m++) { for (n = 0; n < num - m - 1; n++) { if (phone.score[n] < phone.score[n + 1]) { strcpy(tmp, phone.name[n]); strcpy(phone.name[n], phone.name[n + 1]); strcpy(phone.name[n + 1], tmp); mid2 = phone.score[n]; phone.score[n] = phone.score[n + 1]; phone.score[n + 1] = mid2; mid1 = phone.q[n]; phone.q[n] = phone.q[n + 1]; phone.q[n + 1] = mid1; mid1 = phone.p[n]; phone.p[n] = phone.p[n + 1]; phone.p[n + 1] = mid1; } } } for (j = 0; j < num; j++) { strcpy(ans[i].name[j], phone.name[j]); ans[i].p[j] = phone.p[j]; ans[i].q[j] = phone.q[j]; } } for (i = 0; i < t; i++) { for (j = 0; j < num; j++) { PR("%ld %s %ld %ld\n", j + 1, ans[i].name[j], ans[i].p[j], ans[i].q[j]); } } return 0; } |
Double click to view unformatted code.