CCCPaste

Untitled

#include 
#include 
int n;
int k;
int niza[105];
int dp[100005];
using namespace std;
int main()
{
    cin>>n;
    cin>>k;
    int mod = 1e9 + 7;
    for(int i=0; i>niza[i];
    }
        for(int j=0; j<=k; j++){
            dp[j] = 0;
        }
    
    dp[0] = 1;
    // dp[j] --> broj na nacini da stigneme so j candies
    for(int i = 0; i < n; i++) {
        vector pref_sum(k + 10, 0);
        for(int j = k; j >= 0; j--) {
            int x = j + 1, y = j + min(niza[i], k - j);
            if(x <= y) {
                pref_sum[x] += dp[j];
                pref_sum[x] %= mod;
                pref_sum[y + 1] -= dp[j];
                if(pref_sum[y + 1] < 0) {
                    pref_sum[y + 1] += mod;
                }
                
            }
        }
        int sum = 0;
        for(int j = 0; j <= k; j++) {
            sum += pref_sum[j];
            sum %= mod;
            dp[j] += sum;
            dp[j] %= mod;
        }
    }
    cout << dp[k] << endl;
    return 0;
}