Codeforces #831A: Unimodal Array 題解
阿新 • • 發佈:2018-12-24
這題很容易寫錯
先從左往右掃,找到不再上升的點
然後跳過中間的那些平著的點
最後看剩下的是否下降
要注意的是,下降部分的第一個要小於平臺
#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <cmath> #include <algorithm> #include <cstdlib> #include <utility> #include <map> #include <stack> #include <set> #include <vector> #include <queue> #include <deque> #include <bitset> #define x first #define y second #define mp make_pair #define pb push_back #define LL long long #define Pair pair<int,int> #define LOWBIT(x) x & (-x) using namespace std; const int zero_stand=1500; const int MOD=1e9+7; const int INF=0x7ffffff; const int magic=348; int n; int a[101]; int main () { int i; scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d",&a[i]); if (n==1 || n==2) { printf("YES\n"); return 0; } int pos=1; while (pos<=n-1 && a[pos]<a[pos+1]) pos++; while (pos<=n-1 && a[pos]==a[pos+1]) pos++; for (i=pos;i<=n-1;i++) if (a[i]<=a[i+1]) { printf("NO\n"); return 0; } printf("YES\n"); return 0; }