原题链接:Leetcode 面试题 17.08. 马戏团人塔
class Solution {
public:
static bool cmp(const vector<int>& a, const vector<int>& b)
{
if(a[0]!=b[0]) return a[0]<b[0];
else return a[1]>b[1];
}
int bestSeqAtIndex(vector<int>& height, vector<int>& weight) {
int n=height.size();
vector<vector<int>> p;
for(int i=0;i<n;i++)
{
p.push_back({height[i],weight[i]});
}
sort(p.begin(),p.end(),cmp);
vector<int> tail;
tail.push_back(p[0][1]);
for(int i=1;i<n;i++)
{
if(p[i][1]>tail.back()) tail.push_back(p[i][1]);
else
{
int pos=lower_bound(tail.begin(),tail.end(),p[i][1])-tail.begin();
tail[pos]=p[i][1];
}
}
return tail.size();
}
};