結果
問題 | No.2922 Rose Garden |
ユーザー |
![]() |
提出日時 | 2024-10-12 16:34:52 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 724 ms / 3,000 ms |
コード長 | 700 bytes |
コンパイル時間 | 113 ms |
コンパイル使用メモリ | 30,336 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-12 16:35:06 |
合計ジャッジ時間 | 12,649 ms |
ジャッジサーバーID (参考情報) |
judge / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
#include<stdio.h> long long int max(long long int a, long long int b) { if (a > b) return a; else return b; } long long int h[200005]; long long int dp[1003]; int main() { long long int n, s, b; scanf("%lld %lld %lld", &n, &s, &b); long long int i, j; for (i = 0; i < n; i++) scanf("%lld", &h[i]); for (i = 0; i <= s; i++) dp[i] = -1; dp[s] = h[0]; for (i = 0; i < n; i++) { for (j = 0; j <= s; j++) if (dp[j] >= h[i]) dp[s] = max(dp[s], h[i]); for (j = 0; j <= s; j++) if (dp[j] < h[i]) dp[j] = -1; for (j = s; j > 0; j--) if (dp[j] >= 0) dp[j - 1] = max(dp[j - 1], dp[j] + b); } if (dp[s] < 0) printf("No\n"); else printf("Yes\n"); return 0; }