提出 #18243135
ソースコード 拡げる
#include <bits/stdc++.h>
#define ll long long
#define nl "\n"
#define ii pair<int, int>
#define MOD 1000000007
#define inf 1L << 60
using namespace std;
const int M = 1e5 + 7;
int n, a[101], k;
ll dp[M];
ll add(ll a, ll b){
return (a + b) % MOD;
}
ll sub(ll a, ll b){
return(a - b + MOD) % MOD;
}
void solve()
{
cin >> n >> k;
for(int i = 0; i < n; i++) cin >> a[i];
dp[0] = 1;
for(int i = 0; i < n; i++){
vector < int > prefix(k + 2, 0);
for(int j = k; j >= 0; j--){
ll tmp = dp[j];
int L = j + 1;
int R = j + min(a[i], k - j);
prefix[L] = add(prefix[L], tmp);
prefix[R + 1] = sub(prefix[R + 1], tmp);
// for(int here = L; here <= R; here++){
// dp[here] = add(dp[here], tmp);
// }
}
int csum = 0;
for(int i = 0; i <= k; i++){
csum = add(csum, prefix[i]);
dp[i] = add(dp[i], csum);
}
}
cout << dp[k] << nl;
}
int main()
{
ios_base::sync_with_stdio(false), cin.tie(0);
int t = 1;
//cin >> t;
while (t--)
{
solve();
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | M - Candies |
| ユーザ | Imtiaz_Riton |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 100 |
| コード長 | 1273 Byte |
| 結果 | AC |
| 実行時間 | 113 ms |
| メモリ | 4764 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 10 ms | 3572 KiB |
| 0_01 | AC | 2 ms | 3456 KiB |
| 0_02 | AC | 2 ms | 3516 KiB |
| 0_03 | AC | 9 ms | 4700 KiB |
| 1_00 | AC | 4 ms | 3516 KiB |
| 1_01 | AC | 9 ms | 4268 KiB |
| 1_02 | AC | 2 ms | 3452 KiB |
| 1_03 | AC | 113 ms | 4620 KiB |
| 1_04 | AC | 98 ms | 4660 KiB |
| 1_05 | AC | 94 ms | 4764 KiB |
| 1_06 | AC | 101 ms | 4652 KiB |
| 1_07 | AC | 102 ms | 4740 KiB |
| 1_08 | AC | 99 ms | 4736 KiB |
| 1_09 | AC | 99 ms | 4700 KiB |
| 1_10 | AC | 95 ms | 4676 KiB |
| 1_11 | AC | 98 ms | 4652 KiB |