Submission
Status:
[PPP][PPPPPP][PP]
Score: 100
User: Dormon
Problemset: ช่างไฟ
Language: cpp
Time: 0.096 second
Submitted On: 2025-01-03 14:01:16
#include <iostream>
#include <cstdint>
#include <cstring>
#include <vector>
#include <algorithm>
#include <functional>
#include <queue>
#include <numeric>
#include <array>
#include <iomanip> // cout << fixed << setprecision(n);
#define debug(...) Debug(#__VA_ARGS__, __VA_ARGS__)
using namespace std;
const bool TEST_CASE = 0;
template<typename T>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* name, T value) {
std::cout << name << " : " << value << '\n';
}
template<typename T, typename... Args>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* names, T value, Args... args) {
const char* comma = strchr(names, ',');
std::cout.write(names, comma - names) << " : " << value << " | ";
Debug(comma + 1, args...);
}
template<typename T> ostream& operator<<(ostream& out, vector<T>& a) {
for(auto &x : a) out << x << ' ';
return out;
};
const int64_t inf = 1e18;
void solve(){
int n;
cin >> n;
vector<array<int64_t, 4>> dp(n+1, {inf, -inf, inf, -inf});
dp[0] = {0, 0, 0, 0};
for (int i = 1;i <= n;i++){
int e;
cin >> e;
for (int j = 0;j < 4;j++){
dp[i][0] = min(dp[i][0], dp[i-1][j] + e);
dp[i][1] = max(dp[i][1], dp[i-1][j] + e);
dp[i][2] = min(dp[i][2], abs(dp[i-1][j] + e));
dp[i][3] = max(dp[i][3], abs(dp[i-1][j] + e));
}
}
cout << max({dp[n][0], dp[n][1], dp[n][2], dp[n][3]}) << '\n';
}
int main()
{
#ifndef DORMON
ios_base::sync_with_stdio(false);
#endif
cin.tie(0);
int q = 1;
if (TEST_CASE) cin >> q;
while (q--){
solve();
}
}