第一问是求最长不升子序列,第二问是求最长上升子序列
对于第一问利用vector的反向迭代器来转换为最长不降子序列
LL x;
vi v(1, -1),j(1,-1),s;
int main()
{
while (scanf("%lld",&x)==1)
{
s.pb(x);
if (x > v.back())
v.pb(x);
else
*lower_bound(all(v), x) = x;
}
for(auto it=s.rbegin();it!=s.rend();it++){
if((*it)>=j.back())
j.pb(*it);
else *upper_bound(all(j),*it)=*it;
}
cout<<j.size()-1<<"\n";
cout << v.size()-1;
return 0;
}