#include<bits/stdc++.h>
using namespace std;
int ans1,li=0,n=1,a[100010],dp[100010];
vector<vector<int> > l;
int main()
{
while(1)
{
char x;
scanf("%d%c",&a[n],&x);
if(x!=' ')
{
break;
}
n++;
}
dp[n]=ans1=1;
for(int i=n-1;i>=1;i--)
{
for(int j=n;j>i;j--)
{
dp[i]=max(dp[i],a[j]<=a[i]?dp[j]+1:1);
}
ans1=max(ans1,dp[i]);
}
printf("%d\n",ans1);
vector<int> k;
k.push_back(a[1]);
l.push_back(k);
for(int i=2;i<=n;i++)
{
int lb=0;
bool t=0;
for(int j=0;j<=li;j++)
{
if(l[j].back()>=a[i])
{
lb=l[j].back()>l[lb].back()?lb:j;
t=1;
}
else
{
if(!t)
{
lb++;
}
}
}
if(t)
{
l[lb].push_back(a[i]);
}
else
{
vector<int> g;
g.push_back(a[i]);
l.push_back(g);
li++;
}
}
li++;
printf("%d",li);
return 0;
}
下载了测试数据,输入输出没区别