結果
問題 |
No.45 回転寿司
|
ユーザー |
![]() |
提出日時 | 2023-10-10 02:37:50 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 748 bytes |
コンパイル時間 | 912 ms |
コンパイル使用メモリ | 108,572 KB |
最終ジャッジ日時 | 2025-02-17 06:35:34 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 30 |
ソースコード
#include<iostream> #include<iomanip> #include<string> #include<algorithm> #include<vector> #include<set> #include<list> #include<queue> #include<math.h> #include<bitset> using ll = long long; using namespace std; int main(){ int n; cin >> n; // i 番目にお皿を取る場合、max(dp[i-2][0] + v[i], dp[i-1][0] + v[i]) // i 番目にお皿を取らない場合、max(dp[i-2][1], dp[i-1][1]) vector<vector<int>> dp(n+1, vector<int>(2)); vector<int> v(n+1); for (int i = 1; i <= n; i++) cin >> v[i]; dp[1][1] = v[1]; for (int i = 2; i <= n; i++){ dp[i][0] = max(dp[i-1][1], dp[i-2][1]); dp[i][1] = max(dp[i-2][0] + v[i], dp[i-1][0] + v[i]); } cout << max(dp[n][0], dp[n][1]) << endl; }