#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); } |
English