// No.116 門松列(1) // https://yukicoder.me/problems/no/116 // #include #include #include using namespace std; int solve(vector &bamboos); bool is_kadomatsu(int& b2, int& b1, int& b0); int main() { unsigned int N; cin >> N; vector bamboos(N); for (auto i = 0; i < N; i++) cin >> bamboos[i]; int ans = solve(bamboos); cout << ans << endl; } int solve(vector &bamboos) { int hit = 0; // 門松列になっている組み合わせの数 for (auto i = 2; i < bamboos.size(); i++) { if (is_kadomatsu(bamboos[i-2], bamboos[i-1], bamboos[i])) // 連続する3本をそのままの順でチェック hit++; } return hit; } bool is_kadomatsu(int& b2, int& b1, int& b0) { // 門松列の条件を満たしているかチェック if (b2 == b1 || b1 == b0 || b2 == b0) // 3本の長さは全て異なる return false; vector tmp = {b2, b1, b0}; sort(tmp.begin(), tmp.end()); return tmp[1] == b2 || tmp[1] == b0; // 2番目に長い竹が左端または右端にきている }