题目描述
帕秋莉掌握了一种水属性魔法
在此之前,她已经忍了雾之湖上的妖精们很久了
现在,她决定反击!
雾之湖上有n只妖精排成一列,每只妖精的飞行高度严格单调递增,且高度1≤x≤1000
帕秋莉能清除掉列里面一个连续子区间的妖精,当且仅当它们被清理之后,帕秋莉仍然能还原出这个子区间的所有妖精的飞行高度
如,若妖精们飞行高度为1,3,4,5,6,8,那么可以清理飞行高度为4,5的两只妖精,因为清理之后,这两个空位之间的数据是唯一确定的
帕秋莉一次最多选择清除一个连续子区间,请问帕秋莉一次最多能清除多少妖精呢?
输入描述:
第一行一个整数n,表示有n只妖精下一行n个数ai,表示每只妖精飞行高度
输出描述:
输出一行,一个整数表示答案
示例1
输入
复制
3
998 999 1000
输出
复制
2
备注:
对于30%的数据,n≤100对于100%的数据,n≤1,000
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int res=1;
int maxv=0;
for(int i=2;i<=n;i++)
{
if(a[i]==(a[i-1]+1)) res++;
else
{
maxv=max(maxv,res);
res=1;
}
}
maxv=max(maxv,res);
if(maxv==n) cout<<n-1<<endl;
else cout<<maxv-2<<endl;
}