Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k)
, where h
is the height of the person and k
is the number of people in front of this person who have a height greater than or equal to h
. Write an algorithm to reconstruct the queue.
class Solution {
public:
vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {
sort(people.begin(), people.end(), Solution::cmp);
vector<pair<int, int>> p;
for(pair<int, int> i : people)
{
p.insert(p.begin() + i.second, i);
}
return p;
}
public:
static bool cmp(const pair<int, int> &a, const pair<int, int> &b)
{
return a.first > b.first || (a.first == b.first && a.second < b.second);
}
};