#include <iostream> using namespace std; typedef struct { int apple; int pear; int snum; }NUM; void sort(NUM *num, int n, int m, int *s) { int max, temp, i, j, k = 0; for (i = 0; i < n - 1; i++) { max = i; for (j = i + 1; j < n; j++) { if (num[j].apple > num[max].apple) { max = j; } else if (num[j].apple == num[max].apple&&num[j].pear > num[max].pear) { max = j; } } s[k] = num[max].snum; k++; if (k == m) break; temp = num[i].apple; num[i].apple = num[max].apple; num[max].apple = temp; temp = num[i].pear; num[i].pear = num[max].pear; num[max].pear = temp; temp = num[i].snum; num[i].snum = num[max].snum; num[max].snum = temp; } } int main() { int t; cin >> t; while (t--) { int n, m, s[10000]; NUM num[10000]; cin >> n >> m; if (n == 0) { continue; } for (int i = 0; i < n; i++) { cin >> num[i].apple >> num[i].pear; num[i].snum = i + 1; } sort(num, n, m, s); for (int i = 0; i < m - 1; i++) cout << s[i] << " "; cout << s[m - 1] << endl; } return 0; } |
Double click to view unformatted code.