結果
問題 |
No.818 Dinner time
|
ユーザー |
![]() |
提出日時 | 2019-04-20 14:19:26 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,080 bytes |
コンパイル時間 | 1,748 ms |
コンパイル使用メモリ | 174,060 KB |
実行使用メモリ | 12,116 KB |
最終ジャッジ日時 | 2024-10-01 07:04:31 |
合計ジャッジ時間 | 3,768 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 WA * 8 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; typedef unsigned long long ull; ll dp[100005][5]; int main(){ int N, M; cin >> N >> M; vector<vector<ll>> v; rep(i,N){ ll A, B; cin >> A >> B; v.push_back({A,B}); } rep(i,N){ rep(j,3){ ll base = dp[i][j]; {//k==0 dp[i+1][0] = max(dp[i+1][0], base); } {//k==1 if(j>=1){ dp[i+1][1] = max(dp[i+1][1], base + v[i][0]); dp[i+1][1] = max(dp[i+1][1], base + v[i][1]); } } {//k==M if(j>=2){ dp[i+1][2] = max(dp[i+1][2], base + M * v[i][0]); dp[i+1][2] = max(dp[i+1][2], base + (M-1) * v[i][0] + v[i][1]); dp[i+1][2] = max(dp[i+1][2], base + v[i][1]); } } } } ll ret = max(max(dp[N][0], dp[N][1]), dp[N][2]); cout << ret << endl; return 0; }