你的 `cin` 炸了。
你需要读入 $n$ 个数字,而 $n$ 最大是 $10 ^ 6$。
`cin` 的常数非常大,在读入这么多个数字的时候会超时。
by xiaosuan @ 2023-07-24 18:36:17
@[xiaosuan](/user/529574) 蒟蒻不知如何改
by HuangGuangWu666 @ 2023-07-24 19:40:21
用 `scanf`、快读快写或关同步。
具体怎么写可以上百度查。
推荐使用第一种方法;
第二种方法可能会比第一种方法要快一点,但相差不大,而且要手写,容易出 bug,依个人取舍;
第三种方法在某些比赛中没法用,不推荐。
by xiaosuan @ 2023-07-24 19:55:13
注:关同步指关掉 `cin` 与 `scanf` 之间的同步。
by xiaosuan @ 2023-07-24 19:56:52
~~等等,为什么你 A 的题比我还多?~~
by xiaosuan @ 2023-07-24 19:59:44
我已经试过了,还是照旧
by HuangGuangWu666 @ 2023-07-24 20:35:38
@[xiaosuan](/user/529574)
by HuangGuangWu666 @ 2023-07-24 20:36:33
2. 你的数组只开了 $10^5$;
3. 你的代码会越界。
```c++
for(int i=0;i<n;i++){
if(a[i]<=a[i+1]){
```
当 $i = n - 1$ 时,你的代码会访问数组 $a$ 的第 $n$ 个元素,但这个值其实不存在。
by xiaosuan @ 2023-07-24 20:55:05
4. 你把数组开到了函数里面。有时候这么做会导致 RE。
by xiaosuan @ 2023-07-24 20:56:42
```cpp
inline void read(int& a)
{
int s=0,w=1;
char ch=getchar();
while (ch<'0'||ch>'9')
{
if (ch=='-')
w=-1;
ch=getchar();
}
while (ch>='0'&&ch<='9')
{
s = s*10+ch-'0';
ch=getchar();
}
a=s*w;
}
int n,a[1000001];
int main(){
read(n);
for(int i=0;i<n;i++){
read(a[i]);
}
int cnt=1,max=1;
for(int i=0;i<n-1;i++){
if(a[i]<=a[i+1]){
cnt++;
if(max<cnt){
max=cnt;
}
}
else{
if(max<cnt){
max=cnt;
}
cnt=1;
}
}
cout<<max<<endl;
return 0;
}
```
已 _AC_ ,感谢大佬
by HuangGuangWu666 @ 2023-07-24 21:05:30