https://programmers.co.kr/learn/courses/30/lessons/42889

double cmp(pair<int, double> c1, pair<int, double> c2)
{
	if (c1.second == c2.second) return c1.first < c2.first;
	return c1.second > c2.second;
}

vector<int> solution(int N, vector<int> stages) {
	vector<int> answer;
	vector<pair<int, double>> sumFail(N + 1);

	for (int i = 0; i < stages.size(); i++) {
		sumFail[stages[i] - 1].first++;
	}

	int cnt = stages.size();
	for (int i = 0; i < sumFail.size(); i++) {
		if (cnt != 0) {
			sumFail[i].second = double(sumFail[i].first) / cnt;
			cnt -= sumFail[i].first;
		}
		sumFail[i].first = i+1; // first = 스테이지, second = 실패율
	}
	sumFail.pop_back(); // 마지막 필요없다.
	std::sort(sumFail.begin(), sumFail.end(), cmp);
	
	for (int i = 0; i < sumFail.size(); i++) {
		answer.push_back(sumFail[i].first);
	}

	return answer;
}