やるだけ。面倒。
vector<int> S; bool f(int i) { int x = S[i - 1]; int y = S[i]; int z = S[i + 1]; if (x < y && y > z) return true; return false; } bool g(int begin, int end) { if (begin == end) return true; int diff = S[begin + 1] - S[begin]; for (int i = begin; i < end; ++i) { if (diff != S[i + 1] - S[i]) return false; } return true; } class FoxSequence { public: string isValid(vector <int> S_) { S = S_; for (int a = 1; a < (int)S.size(); ++a) { for (int b = a + 1; b < (int)S.size(); ++b) { for (int c = b; c < (int)S.size(); ++c) { for (int d = c + 1; d + 1 < (int)S.size(); ++d) { if (!f(a) || !f(d)) continue; if (b < c) { if (S[b] == S[b + 1]) ; else continue; if (S[c - 1] == S[c]) ; else continue; } if (g(0, a) && g(a, b) && g(b, c) && g(c, d) && g(d, S.size() - 1)) { return "YES"; } } } } } return "NO"; } };