#pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #ifdef local #include #else #define dump(...) void(0); #endif #include #include #include #include namespace man { constexpr inline void chmax(int64_t &a, const int64_t b) noexcept { if(a < b) { a = b; } } } int main() { std::cin.tie(nullptr) -> sync_with_stdio(false); int n; std::cin >> n; std::valarray a(n); for(auto &e: a) { std::cin >> e; } std::valarray dp(2); dp[1] = std::numeric_limits::min(); for(const auto &i: std::views::iota(0, n)) { std::valarray ndp = dp; man::chmax(ndp[0], dp[0]); man::chmax(ndp[0], dp[1] + a[i]); man::chmax(ndp[1], dp[1]); man::chmax(ndp[1], dp[0] - a[i]); dp.swap(ndp); } dump(dp); const auto ret = dp.max(); if(ret == 0) { std::cout << a.min() << '\n'; std::exit(0); } std::cout << ret << '\n'; }