全RE求助
查看原帖
全RE求助
311197
ENDS楼主2020/9/7 11:05
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define il inline
#define re register
const int maxn=1e5+10;
int a[maxn],cnt=0,ans=1,dp[maxn],d[maxn],t;
il int max(int a,int b)
{
	return a>b?a:b;
}
int main()
{
	while(~scanf("%d",&a[++cnt]));
	cnt--;
	memset(dp,1,sizeof(dp));
	for(re int i=1;i<=cnt;++i)
	{
		for(re int j=t;j>0;--j)
		{
			if(a[i]<=a[d[j]])
			{
				dp[i]=dp[d[j]]+1;
				break;
			}
		}
		t=max(t,dp[i]);
		d[dp[i]]=i;
		ans=max(ans,dp[i]);
	}
	printf("%d\n",ans);
	ans=1;t=0;
	memset(dp,1,sizeof(dp));
	for(re int i=1;i<=cnt;++i)
	{
		for(re int j=t;j>0;j--)
		{
			if(a[i]>a[d[j]])
			{
				dp[i]=dp[d[j]]+1;
				break;
			}
		}
		t=max(t,dp[i]);
		d[dp[i]]=i;
		ans=max(ans,dp[i]);
	}
	printf("%d",ans);
	return 0;
}
2020/9/7 11:05
加载中...