# Leetcode 2418: Sort the People Solution

Here, we will see how to solve sort the People Solution of leet code 2418 problem with code and algorithm.

You are given an array of stringsÂ `names` and an arrayÂ `heights` that consists ofÂ distinctÂ positive integers. Both arrays are of lengthÂ `n`.

For each indexÂ `i`,Â `names[i]`Â andÂ `heights[i]`Â denote the name and height of theÂ `ith`Â person.

You have to returnÂ `names`Â sorted inÂ descendingÂ order by the people’s heights.

Example:

```1)
Input: names = ["John","Alice","Bob"], heights = [181,166,172]
Output: ["John","Bob","Alice"]
Explanation: John is the tallest, followed by Bob and Alice.

2)
Input: names = ["Alice","Bob","Bob"], heights = [155,185,150]
Output: ["Bob","Alice","Bob"]
Explanation: The first Bob is the tallest, followed by Alice and the second Bob.```

## Sort the People Solution code in C++

Code 1:

```#include <iostream>
#include <vector>
#include <map>

using namespace std;

vector<string> sortPeople(vector<string>& names, vector<int>& heights) {
// Map will store data in descending oerder based on height
map<int, string, greater<int> > m;
vector<string> v;

for(int i = 0; i < names.size(); i++) {
m[heights[i]] = names[i];
}

// Store names in descending order in vector
for(auto it : m) {
v.push_back(it.second);
}
return v;
}

int main()
{
vector<string> names = {"John","Alice","Bob"};
vector<int> heights = {181,166,172};

vector<string> v = sortPeople(names, heights);

for(auto it : v) {
cout<<it<<"\n";
}

return 0;
}```

Code 2:

```#include <iostream>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

bool cmp(pair<int, string> a, pair<int, string> b) {
return a.first > b.first ? true : false;
}

vector<string> sortPeople(vector<string>& names, vector<int>& heights) {
vector<pair<int, string> > v;

// Store heights and namess in vector respectively
for(int i = 0; i < names.size(); i++) {
v.push_back(make_pair(heights[i], names[i]));
}

// Sort the vector in decending order of heights
sort(v.begin(), v.end(), cmp);

vector<string> res;

// Store only names in result vector
for(auto it : v) {
res.push_back(it.second);
}
return res;
}

int main()
{
vector<string> names = {"John","Alice","Bob"};
vector<int> heights = {181,166,172};

vector<string> v = sortPeople(names, heights);

for(auto it : v) {
cout<<it<<"\n";
}

return 0;
}```

Output:

```John
Bob
Alice```

To check more leetcode problem’s solution. Pls click given below link:

https://www.techieindoor.com/category/leetcode/

Posted in C++, Easy, Leetcode