#include <bits/stdc++.h> using namespace std; int a,tab[5001],odp,najw; int uzy[26000]; int main() { scanf("%d",&a); for(int i=0;i<a;++i) scanf("%d",&tab[i]); uzy[0]=1; sort(tab,tab+a); for(int i=0;i<a;++i) { odp+=uzy[5001]; uzy[5001]+=uzy[5001]; odp%=1000000007; uzy[5001]%=1000000007; for(int j=5000;j>=tab[i]-1;--j) { if(j+tab[i]<=5000) { uzy[j+tab[i]]+=uzy[j]; uzy[j+tab[i]]%=1000000007; odp+=uzy[j]; odp%=1000000007; } else { uzy[5001]+=uzy[j]; uzy[5001]%=1000000007; odp+=uzy[j]; odp%=1000000007; } } } printf("%d",odp); return 0; }
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 30 31 32 33 34 35 36 37 38 39 40 | #include <bits/stdc++.h> using namespace std; int a,tab[5001],odp,najw; int uzy[26000]; int main() { scanf("%d",&a); for(int i=0;i<a;++i) scanf("%d",&tab[i]); uzy[0]=1; sort(tab,tab+a); for(int i=0;i<a;++i) { odp+=uzy[5001]; uzy[5001]+=uzy[5001]; odp%=1000000007; uzy[5001]%=1000000007; for(int j=5000;j>=tab[i]-1;--j) { if(j+tab[i]<=5000) { uzy[j+tab[i]]+=uzy[j]; uzy[j+tab[i]]%=1000000007; odp+=uzy[j]; odp%=1000000007; } else { uzy[5001]+=uzy[j]; uzy[5001]%=1000000007; odp+=uzy[j]; odp%=1000000007; } } } printf("%d",odp); return 0; } |