#include <bits/stdc++.h> using namespace std; vector<string> split_string(string); /* * Complete the canModify function below. */ string canModify(vector<int> a) { int n = a.size(); for (int i = 0; i < n; i++) { bool ok = true; for (int j = 1; j < i; j++) if (a[j] < a[j-1]) { ok = false; break; } for (int j = i+1; j+1 < n; j++) if (a[j] > a[j+1]) { ok = false; break; } if (i > 0 && i+1 < n) ok = ok && (a[i-1] <= a[i+1]); if (ok) return "YES"; } return "NO"; } int main() { ofstream fout(getenv("OUTPUT_PATH")); int n; cin >> n; cin.ignore(numeric_limits<streamsize>::max(), '\n'); string a_temp_temp; getline(cin, a_temp_temp); vector<string> a_temp = split_string(a_temp_temp); vector<int> a(n); for (int a_itr = 0; a_itr < n; a_itr++) { int a_item = stoi(a_temp[a_itr]); a[a_itr] = a_item; } string result = canModify(a); fout << result << "\n"; fout.close(); return 0; } vector<string> split_string(string input_string) { string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) { return x == y and x == ' '; }); input_string.erase(new_end, input_string.end()); while (input_string[input_string.length() - 1] == ' ') { input_string.pop_back(); } vector<string> splits; char delimiter = ' '; size_t i = 0; size_t pos = input_string.find(delimiter); while (pos != string::npos) { splits.push_back(input_string.substr(i, pos - i)); i = pos + 1; pos = input_string.find(delimiter, i); } splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1)); return splits; }