1. 程式人生 > >CodeForces 831A Unimodal Array

CodeForces 831A Unimodal Array

tdi == follow ret 發現 ont ati use fin

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).

Example

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

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).

題目大意:給你一串數字問是不是unimodal(單峰的)。所謂unimodal就是數列前半部分嚴格單增,接下來是連續相等的數字,後面部分是嚴格單減的。例如 [5,?7,?11,?11,?2,?1]中[5,7,11]單增,[11,11]連續相等,[11,2,1]單減。

大致思路:開個數組,按照給出的條件簡單模擬一下。先判斷遞增,模擬成功,計數器+1,不成功直接到下一個循環判斷是否連續相等,不成功再跳到最後一個判斷條件。如果是unimodal,那麽會發現計數器會大於給出數組大小,詳見代碼。

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 105
using namespace std;
int a[maxn];
int main()
{
    int i,n;
    while(scanf("%d",&n)==1)
    {
        memset(a,0,sizeof(a));//因為1=<a[i]<=1000,所以初始化可以直接用0
        for(i=0;i<n;i++)
            cin>>a[i];
        int p=1;
        while(a[p]>a[p-1])//順序要對
            p++;
        while(a[p]==a[p-1])
            p++;
        while(a[p]<a[p-1])
            p++;
        if(p>n)//這裏p只可能大於n或小於n
            cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

CodeForces 831A Unimodal Array