codeforces 831 A

来源:互联网 发布:linux vi退不出来 编辑:程序博客网 时间:2024/05/22 03:51
A. Unimodal Array
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Array of integers is 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.

For example, the following three arrays are unimodal: [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

The first line contains integer n (1 ≤ n ≤ 100) — the number of elements in the array.

The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 1 000) — the elements of the array.

Output

Print "YES" if the given array is unimodal. Otherwise, print "NO".

You can output each letter in any case (upper or lower).

Examples
input
61 5 5 5 4 2
output
YES
input
510 20 30 20 10
output
YES
input
41 2 1 2
output
NO
input
73 3 3 3 3 3 3
output
YES
Note

In the first example the array is unimodal, because it is strictly increasing in the beginning (from position 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).

题意:给你n个数,要你判断他是否是单峰的。
单峰定义:一开始就严格增加;         之后它是不变的;         之后它是严格减少。第一个块(增加)和最后一个块(减少)可能不存在。 允许这两个块都不存在。例如,以下三个阵列是单峰的:[5,7,11,11,2,1],[4,4,2],[7],但以下三个不是单峰:[5,5,6 ,6,1],[1,2,2,2],[4,5,5,6]。
代码:
#include<bits/stdc++.h>using namespace std;int a[105];int main(){    int n;    while(~scanf("%d",&n)){    for(int i=0;i<n;i++)    {        scanf("%d",&a[i]);    }    bool flag=false;    int num=a[0];    int cnt=0;    for(int i=1;i<n;i++)    {        if(a[i]<num)        {            cnt=i;            break;        }        else num=a[i];    }    if(cnt!=0){    for(int i=cnt;i<n-1;i++)    {        if(a[i+1]>=a[i])        {            flag=true;            break;        }    }    }    for(int i=0;a[i]<num;i++)    {        if(a[i]==a[i+1])        {            flag=true;            break;        }    }    if(flag) puts("NO");    else puts("YES");    }    return 0;}