大佬蒟蒻又来写题解啦!

这道题要求一个序列中的最长不下降子段的长度,所以当我们找到一个数小于前面一个数的时候,就取最大的长度即可。

然后我们看一下数据范围:1<=n<=10的5次方(即100000)

为了保险起见,我们还是用scanf吧……

我直接用一个for完成了(因为懒得打那么多……)

话不多说,直接上代码!

#include<iostream>
#include<cstdio>//scanf需要用到
#include<cmath>//max需要用到

using namespace std;
int n,a,t,g=1,d;//我们待会儿要从第二个数枚起,g开始定为1,t用来存储a
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a);
        if(i>1)//如果已经输入了第2个数,就进行判断
        {
            if(a<t)d=max(g,d),g=1;//若a小于上一个数t,用d存储最大值,而现在的a已经属于另一个子串,所以g应该赋值1
            else g++;
        }
        t=a;//t储存为a,以进行后面的比较
    }
    cout<<max(d,g);//最后d可能为0,输出最大值

    return 0;
}