結果
| 問題 |
No.505 カードの数式2
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-05-14 23:34:44 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 877 bytes |
| コンパイル時間 | 577 ms |
| コンパイル使用メモリ | 63,448 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-16 05:53:04 |
| 合計ジャッジ時間 | 2,826 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge6 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 9 WA * 10 RE * 10 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
int main() {
int N = 0;
cin>>N;
vector<int> va(N);
for(int i = 0; i < N; ++i) cin>>va[i];
vector<vector<ll>> dp(N, vector<ll>(2, 0));
dp[0][0] = dp[0][1] = va[0];
for(int i = 0; i < N - 1; ++i) {
for(int j = 0; j < 4; ++j) {
if(j == 3 && dp[i][0] == 0) continue;
ll a = 0;
if(j == 0) a = dp[i][0] + va[i + 1];
if(j == 1) a = dp[i][0] - va[i + 1];
if(j == 2) a = dp[i][0] * va[i + 1];
if(j == 3) a = dp[i][0] / va[i + 1];
if(a > dp[i + 1][0]) dp[i + 1][0] = a;
if(a < dp[i + 1][1]) dp[i + 1][1] = a;
if(j == 2 && dp[i][1] < 0 && va[i + 1] < 0) {
ll b = dp[i][1] * va[i + 1];
if(b > dp[i + 1][0]) dp[i + 1][0] = b;
if(b < dp[i + 1][1]) dp[i + 1][1] = b;
}
}
}
cout<<dp[N - 1][0]<<endl;
}