题目描述:
#include<bits/stdc++.h>
using namespace std;
int a[1005],sum[1005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
sum[i]=1;
int m=i;
for(int j=i+1;j<n;j++)
{
if(a[m]>=a[j])
{
sum[i]++;
m=j;
}
if(a[m]<a[j])
{
break;
}
}
m=i;
for(int j=i-1;j>=0;j--)
{
if(a[m]>=a[j])
{
sum[i]++;
m=j;
}
if(a[m]<a[j])
{
break;
}
}
}
int max=-1;
for(int i=0;i<n;i++)
{
if(sum[i]>max)
{
max=sum[i];
}
}
cout<<max<<endl;
return 0;
}
如上图所示,每个位置都有一个建筑,每个位置占据的宽度都是一样,可能有不同的高度,现在需要挑选一个位置的上方开始人工降雨,问你最多能淋到雨的位置有几个。如果一个位置能被雨淋到,而且紧挨着的旁边的建筑不高于他,那么旁边的建筑也能被雨淋到,上图中在中间的地方降雨总共有4个位置会被淋到。
输入格式:
第一行输入一个整数n
第二行输入n个数,表示n个建筑的高度。
输出格式:
输出一个整数
样例输入1:
5 1 2 1 2 1
样例输出1:
3
样例输入2:
8 1 2 1 1 1 3 3 4
样例输出2:
6
约定:
1<=n<=1000,建筑的高度都<=1000