题解 CF580A 【Kefa and First Steps】
Mr_WA
2019-10-16 17:45:21
# 本~~大佬~~蒟蒻又来写题解啦!
这道题要求一个序列中的最长不下降子段的长度,所以当我们找到一个数小于前面一个数的时候,就取最大的长度即可。
然后我们看一下数据范围: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;
}
```