void cdq(int l,int r){
if(l==r){
f[l]=max(f[l],1);
return ;
}
int mid=(l+r)>>1;
cdq(l,mid);
for(int i=l;i<=r;i++)b[i]=make_tuple(a[i].first,a[i].second,i);
sort(b+l,b+r+1);
for_each(b+l,b+r+1,[&mid](auto &&now){
auto &[x,y,i]=now;
if(i<=mid)mdf(y,f[i]);
else f[i]=max(f[i],qry(y)+1);
});
for(int i=l;i<=mid;i++)clr(a[i].second);
cdq(mid+1,r);
}
rt,求助中间的lambda表达式含义