結果

問題 No.2922 Rose Garden
ユーザー pengin_2000
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}

0