Codeforce-831A Unimodal Array

mac2026-05-05  6

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

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

Copy

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

 

给你一串数字,从左往右分为三部分,前一部分是严格递增的(没有相等),中间是最大值(最大值可以重复多次或者只有一次),后面是严格递减的(没有相等)。

模拟过程即可,第一次写的不够简洁,后面看别人的改的更简洁。

#include <cstdio> #include <string.h> const int MaxN = 105; int a[MaxN], n; int main() { while(~scanf("%d", &n)) { a[0] = 0; for(int i = 1; i <= n; i++) scanf("%d", a + i); bool flag = true, topOk = false; int top = 0; for(int i = 1; i <= n; i++) { if(!topOk) { if(a[i] <= a[i - 1]) { topOk = true; i--; } top = a[i]; } else { if((a[i] == a[i - 1] && a[i] != top) || a[i] > a[i - 1]) { flag = false; break; } } } printf("%s\n", flag ? "YES": "NO"); } }

 

简洁版

#include <cstdio> #include <string.h> const int MaxN = 105, INF = 0x3f3f3f3f; int a[MaxN], n; int main() { while(~scanf("%d", &n)) { for(int i = 0; i < n; i++) scanf("%d", a + i); a[n] = INF; int pos = 0; while(a[pos + 1] > a[pos]) pos++; while(a[pos + 1] == a[pos]) pos++; while(a[pos + 1] < a[pos]) pos++; printf("%s\n", pos < n - 1 ? "NO": "YES"); } }

 

最新回复(0)