View Code of Problem 5

#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 || m == 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.


Back to problem 5