题目描述
给n个信封的长度和宽度。如果信封A的长和宽都小于信封B,那么信封A可以放到信封B里,请求出信封最多可以嵌套多少层。
输入描述:
输出包含多行,第一行包括一个整数,代表信封的个数n(1<=n<=100000)。接下来n行,每行两个整数li和wi
,代表信封的长度和宽度(-1e9<li,wi<1e9)。
输出描述:
输出包括一行,代表信封最多嵌套多少层。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool Comparator(pair<int, int> p1, pair<int, int> p2){
if(p1.first == p2.first){
return p1.second > p2.second;
}else{
return p1.first < p2.first;
}
}
int maxEnvelopes(vector<pair<int, int>> &arr, int n){
if (n<=0) return 0;
std::sort(arr.begin(), arr.end(), Comparator);
vector<int> ends(n, 0);
ends[0]=arr[0].second;
int right=0;
int l=0;
int r=0;
int m=0;