結果
問題 | No.2854 -1 Subsequence |
ユーザー | tottoripaper |
提出日時 | 2024-08-27 02:59:48 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 47 ms / 2,000 ms |
コード長 | 885 bytes |
コンパイル時間 | 2,797 ms |
コンパイル使用メモリ | 206,640 KB |
実行使用メモリ | 14,976 KB |
最終ジャッジ日時 | 2024-08-27 02:59:54 |
合計ジャッジ時間 | 5,410 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 40 |
ソースコード
#include <bits/stdc++.h> using ll = std::int64_t; int main(){ std::cin.tie(nullptr); std::ios::sync_with_stdio(false); int N; std::cin >> N; std::vector<int> A(N); for(int i=0;i<N;i++){ std::cin >> A[i]; } std::vector dp(N, std::vector(2, std::numeric_limits<ll>::min())); dp[0][1] = -A[0]; for(int i=1;i<N;i++){ dp[i][0] = std::max(dp[i][0], dp[i - 1][0]); dp[i][1] = std::max(dp[i][1], dp[i - 1][1]); if(dp[i - 1][1] != std::numeric_limits<ll>::min()){ dp[i][0] = std::max(dp[i][0], dp[i - 1][1] + A[i]); } if(dp[i - 1][0] != std::numeric_limits<ll>::min()){ dp[i][1] = std::max(dp[i][1], dp[i - 1][0] - A[i]); } dp[i][1] = std::max<ll>(dp[i][1], -A[i]); } ll res = std::max(dp[N - 1][0], dp[N - 1][1]); std::cout << res << std::endl; }