0
点赞
收藏
分享

微信扫一扫

codeforces 831A Unimodal Array


​​点击打开链接​​


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;
}



举报

相关推荐

0 条评论