int countPartitions(int n, int d, vector<int>& arr) {
        // Code here
        long long sum=0;
        for(int i=0;i<n;i++){
            sum+=arr[i];
        }
        long long target=(sum+d);
        if(target%2==1 || sum<d || n==1) return 0;
        int s=target/2;
        
        //*****
        long long mod = 1e9+7;
        long long ans[n+1][s+1];
        // for(int i=0;i<n+1;i++) ans[i][0]=1;
        ans[0][0]=1;
        for(int i=1;i<s+1;i++) ans[0][i]=0;
        
        for(int i=1;i<n+1;i++){
            for(int j=0;j<s+1;j++){
                if(arr[i-1]<=j) ans[i][j]=ans[i-1][j-arr[i-1]]%mod + ans[i-1][j]%mod;
                else ans[i][j]=ans[i-1][j]%mod;
            }
        }
        return ans[n][s]%mod;
        // return ans[n][s];
        //*****
        
    }

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: