結果
問題 | No.1037 exhausted |
ユーザー |
![]() |
提出日時 | 2020-04-25 08:45:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 43 ms / 2,000 ms |
コード長 | 992 bytes |
コンパイル時間 | 2,169 ms |
コンパイル使用メモリ | 193,844 KB |
最終ジャッジ日時 | 2025-01-10 00:53:29 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for(int i = 0; i < (n); ++i)#define srep(i,s,t) for (int i = s; i < t; ++i)#define drep(i,n) for(int i = (n)-1; i >= 0; --i)using namespace std;typedef long long int ll;typedef pair<ll,ll> P;#define yn {puts("YES");}else{puts("NO");}#define MAX_N 200005int main() {ll n, m, l;cin >> n >> m >> l;ll x[n+2] = {}, v[n+2] = {}, w[n+2] = {};x[n+1] = l;srep(i,1,n+1)cin >> x[i] >> v[i] >> w[i];ll dp[n+2][m+1];ll INF = 1001001001001001001;rep(i,n+2)rep(j,m+1)dp[i][j] = INF;dp[0][m] = 0;rep(i,n+1){int d = x[i+1] - x[i];rep(j,m+1){if(j < d)continue;dp[i+1][j-d] = min(dp[i+1][j-d], dp[i][j]);int nv = min(m, j-d+v[i+1]);dp[i+1][nv] = min(dp[i+1][nv], dp[i][j] + w[i+1]);}}ll ans = INF;rep(j,m+1)ans = min(ans, dp[n+1][j]);if(ans == INF)ans = -1;cout << ans << endl;return 0;}