求各位大佬帮帮我吧!
#include<stdio.h>
using namespace std;
unsigned h[50001],f[50001],d[50001],n,ans1=0,ans2=0,i,j,wh,nowh;
void max(unsigned &a,unsigned b){
a=a>b?a:b;
}
int main(){
for(n=1;scanf("%d",h+n)!=EOF;n++);
n--;
for(i=1;i<=n;f[i++]++)
for(j=1;j<i;j++)
if(h[j]>=h[i]) max(f[i],f[j]);
for(i=1;i<=n;i++) max(ans1,f[i]);
for(i=1;i<=n;i++){
wh=0;nowh=2000000000;
for(j=1;j<=ans2;j++)
if(d[j]>=h[i] && d[j]<nowh) nowh=d[j],wh=j;
if(wh) d[wh]=h[i];
else d[++ans2]=h[i];
}
printf("%d\n%d",ans1,ans2);
return 0;
}