結果
問題 | No.818 Dinner time |
ユーザー |
|
提出日時 | 2019-04-19 22:07:25 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 844 bytes |
コンパイル時間 | 691 ms |
コンパイル使用メモリ | 73,896 KB |
実行使用メモリ | 7,040 KB |
最終ジャッジ日時 | 2024-09-22 20:07:49 |
合計ジャッジ時間 | 2,582 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 27 WA * 2 |
ソースコード
#include <iostream>#include <algorithm>#include <vector>#include <string>#define REP(i, n) for (int i = 0; i < (n); i++)using namespace std;long long dp0[100001];long long dp1[100001];long long dp2[100001];void to(long long &x, long long y) {x = max(x, y);}int main() {int N, M;cin >> N >> M;vector<long long> A(N), B(N);REP(i, N) {cin >> A[i] >> B[i];}REP(i, N+1) dp0[i] = -1e18;REP(i, N+1) dp1[i] = -1e18;REP(i, N+1) dp2[i] = -1e18;dp0[0] = 0;REP(i, N) {to(dp0[i+1], dp0[i] + max({M*A[i], B[i], (M-1)*A[i]+B[i]}));to(dp1[i+1], dp0[i] + max(A[i], B[i]));if (i > 0) {to(dp2[i+1], dp0[i]);}to(dp1[i+1], dp1[i] + max(A[i], B[i]));to(dp2[i+1], dp1[i]);to(dp2[i+1], dp2[i]);}long long ans = max({dp0[N], dp1[N], dp2[N]});cout << ans << endl;}