![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> int a[10000]; int dp[10000]; int cnt; int main() { freopen("input.txt","r",stdin); printf("%d\n",cnt); while(scanf("%d",&a[cnt++])!=EOF); printf("%d\n",cnt); cnt--; for(int i=0;i<cnt;i++) dp[i]=1; for(int i=0;i<cnt;i++) for(int j=0;j<i;j++) { if(a[j]>=a[i]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1; } int max=-1; for(int i=0;i<cnt;i++) if(dp[i]>max) max=dp[i]; printf("%d\n",max); for(int i=0;i<cnt;i++) dp[i]=1; for(int i=0;i<cnt;i++) for(int j=0;j<i;j++) { if(a[j]<a[i]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1; } max=-1; for(int i=0;i<cnt;i++) if(dp[i]>max) max=dp[i]; printf("%d\n",max); return 0; }
一个是cnt那地方的问题
再一个是用另一种Nlogn的方法重新做一下