sort太慢了吗?
#include <bits/stdc++.h>
using namespace std;
int a[100005], n = 0, nowh, maxn = -1, minn = -1;
struct seq
{
int h, len1 = 1, len2 = 1;
} s[100005];
bool cmp(seq a, seq b)
{
if (a.h >= nowh && b.h >= nowh)
{
return a.len1 > b.len1;
}
else if (a.h < nowh)
return 0;
else
return 1;
}
bool cmp2(seq a, seq b)
{
if (a.h < nowh && b.h < nowh)
{
return a.len2 > b.len2;
}
else if (a.h >= nowh)
return 0;
else
return 1;
}
int main()
{
while (~scanf("%d", &s[++n].h))
{
a[n] = s[n].h;
}
n--;
for (int i = 2; i <= n; i++)
{
nowh = a[i];
sort(s + 1, s + i, cmp);
if (s[1].h >= a[i])
{
s[i].len1 += s[1].len1;
// printf("%d %d\n", i, s[1].len1);
}
sort(s + 1, s + i, cmp2);
if (s[1].h < a[i])
{
s[i].len2 += s[1].len2;
}
maxn = max(maxn, s[i].len1);
minn = max(minn, s[i].len2);
}
printf("%d\n%d\n", maxn, minn);
return 0;
}