题目:
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,len1,len2;
long long a[30010],dp1[30010],dp2[30010];
int main()
{
while(cin>>a[n])
{
n++;
}
len1=1,len2=1;
dp1[1]=a[1],dp2[1]=a[1];
for(int i=2;i<=n;i++)
{
if(a[i]<=dp1[len1])
{
len1++;
dp1[len1]=a[i];
}
else
{
int k1=upper_bound(dp1+1,dp1+len1+1,a[i],greater<int>())-dp1;
dp1[k1]=a[i];
}
if(a[i]>dp2[len2])
{
len2++;
dp2[len2]=a[i];
}
else
{
int k2=lower_bound(dp2+1,dp2+len2+1,a[i])-dp2;
dp2[k2]=a[i];
}
}
cout<<len1<<endl<<len2;
return 0;
}

