結果
| 問題 |
No.561 東京と京都
|
| コンテスト | |
| ユーザー |
vtr_coder
|
| 提出日時 | 2017-08-25 23:06:58 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 884 bytes |
| コンパイル時間 | 1,532 ms |
| コンパイル使用メモリ | 165,200 KB |
| 実行使用メモリ | 10,496 KB |
| 最終ジャッジ日時 | 2024-10-15 16:09:11 |
| 合計ジャッジ時間 | 5,144 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 7 TLE * 1 -- * 9 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define REP(i,n) for(ll i=0;i<n;++i)
#define SORT(name) sort(name.begin(), name.end())
#define ZERO(p) memset(p, 0, sizeof(p))
#define MINUS(p) memset(p, -1, sizeof(p))
#define MOD 1000000007
#define INF 1000000000
#define MAX_N 110
ll N, D;
ll T[MAX_N];
ll K[MAX_N];
// i 日目まで働いて今自分が cur にいて、その時の手持ちが cost のときの最大値
ll dfs(ll i, ll cur, ll cost) {
if(i >= N) { return cost; }
ll ans;
if(cur == 0) {
ans = max(dfs(i+1, 0, cost + T[i]), dfs(i+1, 1, cost - D + K[i]));
} else {
ans = max(dfs(i+1, 1, cost + K[i]), dfs(i+1, 0, cost - D + T[i]));
}
return ans;
}
int main()
{
cin >> N >> D;
REP(i, N) {
cin >> T[i] >> K[i];
}
ll ans = dfs(0, 0, 0);
printf("%lld\n", ans);
return 0;
}
vtr_coder