class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
// make vector of pairs of {score, original index};
vector<pair<int, int>> scoreAndIndexes(score.size(), {0, 0});
for(int ii=0; ii<score.size(); ++ii)
{
scoreAndIndexes[ii] = {score[ii], ii};
}
sort(scoreAndIndexes.begin(),
scoreAndIndexes.end(),
[](const pair<int, int>& a, const pair<int, int>& b){return b.first < a.first;});
// make vector of strings for ranking titles
vector<string> numStrings(score.size(), "");
if (numStrings.size() >= 1)
{
numStrings[0] = "Gold Medal";
}
if (numStrings.size() >= 2)
{
numStrings[1] = "Silver Medal";
}
if (numStrings.size() >= 3)
{
numStrings[2] = "Bronze Medal";
}
for(int ii=3; ii<numStrings.size(); ++ii)
{
numStrings[ii] = to_string(ii+1);
}
// make final answer vector
vector<string> ans(score.size(), "");
for(int ii=0; ii<scoreAndIndexes.size(); ++ii)
{
ans[scoreAndIndexes[ii].second] = numStrings[ii];
}
return ans;
}
};