点击打开链接
A. Unimodal Array
time limit per test
memory limit per test
input
output
unimodal, if:
- it is strictly increasing in the beginning;
- after that it is constant;
- after that it is strictly decreasing.
The first block (increasing) and the last block (decreasing) may be absent. It is allowed that both of this blocks are absent.
[5, 7, 11, 11, 2, 1], [4, 4, 2], [7], but the following three are not unimodal: [5, 5, 6, 6, 1], [1, 2, 1, 2], [4, 5, 5, 6].
Write a program that checks if an array is unimodal.
Input
n (1 ≤ n ≤ 100) — the number of elements in the array.
n integers a1, a2, ..., an (1 ≤ ai) — the elements of the array.
Output
YES" if the given array is unimodal. Otherwise, print "NO".
You can output each letter in any case (upper or lower).
Examples
input
6 1 5 5 5 4 2
output
YES
input
5 10 20 30 20 10
output
YES
input
4 1 2 1 2
output
NO
input
7 3 3 3 3 3 3 3
output
YES
Note
1 to position 2, inclusively), that it is constant (from position 2 to position 4, inclusively) and then it is strictly decreasing (from position 4 to position 6, inclusively).
总是写的不对,后来看了一下别人的,就是判断一个数组是不是只有一个峰
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int n,a[110];
scanf("%d",&n);
memset(a,1010,sizeof(a));
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int t=1;
while(t<=n-1&&a[t]<a[t+1])
t++;
while(t<=n-1&&a[t]==a[t+1])
t++;
for(int i=t;i<=n-1;i++)
{
if(a[i]<=a[i+1])
{
printf("NO\n");
return 0;
}
}
printf("YES\n");
return 0;
}