#include <bits/stdc++.h> #define DEBUG(x) cout << '>' << #x << ':' << x << endl; #define fi first #define se second #define ll long long #define ld long double #define pb push_back #define vi vector<int> #define pi pair<int, int> #define MAXN 100001 using namespace std; const ll mod = 1000000007; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vi A(n); for (int i = 0; i < n; i++) { cin >> A[i]; } sort(A.begin(), A.end()); int max_e = A.back(); vector<ll> M(max_e + 2, 0); vector<ll> add(max_e + 2, 0); M[0] = 1; for (int first = 0; first < n; first++) { for (int i = A[first] - 1; i < M.size(); i++) { if (M[i] > 0) { int new_v = min(max_e + 1, i + A[first]); add[new_v] += M[i]; add[new_v] %= mod; } } for (int i = A[first]; i < M.size(); i++) { M[i] += add[i]; M[i] %= mod; add[i] = 0; } } ll res = 0; for(int i=1; i<M.size(); i++) { res += M[i]; res %= mod; } cout << res << endl; 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <bits/stdc++.h> #define DEBUG(x) cout << '>' << #x << ':' << x << endl; #define fi first #define se second #define ll long long #define ld long double #define pb push_back #define vi vector<int> #define pi pair<int, int> #define MAXN 100001 using namespace std; const ll mod = 1000000007; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vi A(n); for (int i = 0; i < n; i++) { cin >> A[i]; } sort(A.begin(), A.end()); int max_e = A.back(); vector<ll> M(max_e + 2, 0); vector<ll> add(max_e + 2, 0); M[0] = 1; for (int first = 0; first < n; first++) { for (int i = A[first] - 1; i < M.size(); i++) { if (M[i] > 0) { int new_v = min(max_e + 1, i + A[first]); add[new_v] += M[i]; add[new_v] %= mod; } } for (int i = A[first]; i < M.size(); i++) { M[i] += add[i]; M[i] %= mod; add[i] = 0; } } ll res = 0; for(int i=1; i<M.size(); i++) { res += M[i]; res %= mod; } cout << res << endl; return 0; } |