#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n=1,a[100005],b[100005],len;
int main()
{
while(cin >> a[n])
{
n++;
}
n--;
reverse(a+1,a+n+1);
len = 0;
b[1] = a[1];
for(int i=1;i<=n;i++)
{
if(a[i] >= b[len]) b[++len] = a[i];
else
{
int m = upper_bound(b+1,b+len+1,a[i])-b;
b[m] = a[i];
}
}
cout << len << endl;
reverse(a+1,a+n+1);
len = 0;
b[1] = a[1];
for(int i=1;i<=n;i++)
{
if(a[i] > b[len]) b[++len] = a[i];
else
{
int m = upper_bound(b+1,b+len+1,a[i])-b;
b[m] = a[i];
}
}
cout << len << endl;
return 0;
}
不知道那个地方脑残了,应该是低级错误,但我太蒟,检查不出来。