Пожалуйста, прочтите новое правило об ограничении использования AI-инструментов. ×

Need Help with AtCoder educational DP, Candies problem

Правка en2, от akhil14shukla, 2021-08-13 15:02:43

The code below is failing in one test case out of 16. Someone please explain the bug in my code?

    long long n, k;
    cin >> n >> k;
    vector<long long> a(n + 1, 0);
    long long mx = 0;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        mx += a[i];
    }
    if (mx < k)
    {
        cout << 0;
        return 0;
    }
    else if (k == mx)
    {
        cout << 1;
        return 0;
    }
    k = min(k, mx &mdash; k);
    vector<vector<long long>> dp(2, vector<long long>(k + 1, 0));
    dp[0][0] = 1;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= k; j++)
        {
            dp[1][j] += dp[0][j];
            dp[1][j] %= 1000000007;
            if (j + a[i] + 1 <= k)
            {
                dp[1][j + a[i] + 1] -= dp[0][j];
                dp[1][j + a[i] + 1] %= 1000000007;
            }
        }
        dp[0][0] = dp[1][0];

        for (int j = 1; j <= k; j++)
        {
            dp[1][j] += dp[1][j - 1];
            dp[1][j] = dp[1][j] % 1000000007;
            dp[0][j] = dp[1][j];
            dp[1][j - 1] = 0;
        }
        dp[1][k] = 0;
    }
    cout << dp[0][k];
Теги #dynamic programing, #atcoder

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en2 Английский akhil14shukla 2021-08-13 15:02:43 2 Tiny change: 'my code?\n~~~~~\n ' -> 'my code?\n\n~~~~~\n '
en1 Английский akhil14shukla 2021-08-13 15:02:23 1259 Initial revision (published)