提出 #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
結果
AC × 16
セット名 テストケース
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