Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int long long
  6.  
  7. signed main()
  8. {
  9. int n;
  10. cin >> n;
  11. vector<int> a(n);
  12. for (int i = 0; i < n; ++i)
  13. {
  14. cin >> a[i];
  15. }
  16. sort(a.begin(), a.end());
  17. vector<vector<int> > dp(n + 1);
  18. for (int i = 0; i <= n; ++i)
  19. {
  20. dp[i].resize(a[n - 1] + 1);
  21. }
  22. int cnt = 0;
  23. int k = 0;
  24. dp[0][0] = 1;
  25. for (int i = 1; i <= n; ++i)
  26. {
  27. cnt = (cnt + k) % (1000000007);
  28. for (int j = 0; j <= a[n - 1]; ++j)
  29. {
  30. if (dp[i - 1][j] > 0 && a[i - 1] + j > a[n - 1])
  31. {
  32. k += dp[i - 1][j] + k;
  33. }
  34. }
  35. for (int j = 0; j <= a[n - 1]; ++j)
  36. {
  37. dp[i][j] = dp[i - 1][j];
  38. if (j >= a[i - 1])
  39. {
  40. dp[i][j] += dp[i - 1][j - a[i - 1]];
  41. if (j > a[i - 1])
  42. {
  43. cnt += dp[i - 1][j];
  44. cnt = cnt % (1000000007);
  45. }
  46. }
  47. }
  48. }
  49. cout << cnt;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement