#include <iostream> #include <vector> #define GET_VALUE(value_) (std::cin >> (value_)) #define ITR(container_, vname_) for (auto &vname_ : (container_)) #define GETT(type_, name_) for (type_ name_, name_##_marker_ = 1; name_##_marker_ && (GET_VALUE(name_), 1); --name_##_marker_) #define GET(name_) GETT(int, name_) #define DECL_GETT(type_, name_) \ type_ name_; \ GET_VALUE(name_) #define DECL_GET(name_) DECL_GETT(int, name_) #define PUTN(value_) std::cout << (value_) #define PUT(value_) PUTN(value_) << "\n" using namespace std; #define V_MAX 1000000000 #define V_MIN -V_MAX static int calculate(vector<int> const &v, int increase) { int result = 0; auto it = v.cbegin(); int last = *it; while (++it != v.cend()) { int cur = *it; if (increase) { if (cur <= last) { ++result; cur = V_MAX; } } else { if (cur >= last) { ++result; cur = V_MIN; } } last = cur; increase ^= 1; } return result; } int main() { DECL_GET(n); vector<int> array(n); ITR(array, e) GET(v) e = v; int a = calculate(array, 0); int b = calculate(array, 1); PUT(min(a, b)); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> #include <vector> #define GET_VALUE(value_) (std::cin >> (value_)) #define ITR(container_, vname_) for (auto &vname_ : (container_)) #define GETT(type_, name_) for (type_ name_, name_##_marker_ = 1; name_##_marker_ && (GET_VALUE(name_), 1); --name_##_marker_) #define GET(name_) GETT(int, name_) #define DECL_GETT(type_, name_) \ type_ name_; \ GET_VALUE(name_) #define DECL_GET(name_) DECL_GETT(int, name_) #define PUTN(value_) std::cout << (value_) #define PUT(value_) PUTN(value_) << "\n" using namespace std; #define V_MAX 1000000000 #define V_MIN -V_MAX static int calculate(vector<int> const &v, int increase) { int result = 0; auto it = v.cbegin(); int last = *it; while (++it != v.cend()) { int cur = *it; if (increase) { if (cur <= last) { ++result; cur = V_MAX; } } else { if (cur >= last) { ++result; cur = V_MIN; } } last = cur; increase ^= 1; } return result; } int main() { DECL_GET(n); vector<int> array(n); ITR(array, e) GET(v) e = v; int a = calculate(array, 0); int b = calculate(array, 1); PUT(min(a, b)); } |