赛时100pts,赛后提交此题被Hack,锰锌求助
  • 板块P9147 签到题
  • 楼主Smi1EMAsk
  • 当前回复18
  • 已保存回复18
  • 发布时间2023/3/12 19:47
  • 上次更新2023/10/23 21:43:55
查看原帖
赛时100pts,赛后提交此题被Hack,锰锌求助
739250
Smi1EMAsk楼主2023/3/12 19:47

RT

#include<bits/stdc++.h>
using namespace std;
inline int rd(){
	int num=0,sign=1; char ch=getchar();
	while (ch<'0'||ch>'9') {if (ch=='-') sign=-1; ch=getchar();}
	while (ch>='0'&&ch<='9') num=(num<<3)+(num<<1)+(ch^48),ch=getchar();
	return num*sign;
}
const int N=1e6+7;
int dp[N],a[N],n,g[N];
signed main(){
	n=rd();
	for(int i=1;i<=n;i++) a[i]=rd();
	for(int i=1;i<=n;i++){
		if(a[i]>a[i-1]) dp[i]=dp[i-1]+1;
		else dp[i]=1;
	}
	for(int i=n;i>=1;i--){
		if(a[i]<a[i+1]) g[i]=g[i+1]+1;
		else g[i]=1;
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		if(a[i]+1<a[i+2]){
			ans=max(ans,dp[i]+1+g[i+2]);
		}
		else if(i==n) ans=max(ans,dp[i]);
		else ans=max(ans,dp[i]+1);
	}
	cout<<ans<<endl;
	return 0;
}
2023/3/12 19:47
加载中...