#include <bits/stdc++.h> int n; int mod=1000000007; int max, wynik; int dp[5003]; int tab[5003]; int main() { scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &tab[i]); std::sort(tab+1, tab+n+1); dp[0]=1; for(int i=1; i<=n; i++) for(int j=5001; j>=tab[i]-1; j--) if(dp[j]>0) { max=std::min(5001, j+tab[i]); dp[max]=(dp[max]+dp[j])%mod; } for(int i=1; i<=5001; i++) wynik=(wynik+dp[i])%mod; printf("%d\n", wynik); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <bits/stdc++.h> int n; int mod=1000000007; int max, wynik; int dp[5003]; int tab[5003]; int main() { scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &tab[i]); std::sort(tab+1, tab+n+1); dp[0]=1; for(int i=1; i<=n; i++) for(int j=5001; j>=tab[i]-1; j--) if(dp[j]>0) { max=std::min(5001, j+tab[i]); dp[max]=(dp[max]+dp[j])%mod; } for(int i=1; i<=5001; i++) wynik=(wynik+dp[i])%mod; printf("%d\n", wynik); } |