Jeremiah_

ABC_44 - C - 高橋君とカード / Tak and Cards

May 23rd, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define SYNC ios::sync_with_stdio(0);
  4. #define F first
  5. #define S second
  6. #define endl '\n'
  7.  
  8.  
  9. using namespace std;
  10.  
  11. using ll = long long int;
  12. using ii = pair<int, int>;
  13. using vii = vector<ii>;
  14. using vi = vector<int>;
  15. using graph = vector<vi>;
  16. const int INF = 0x3f3f3f3f;
  17. const int MAXN = 58;
  18. const ll mod = 1000000007;
  19.  
  20. vi x;
  21. int des[MAXN], n, a;
  22. ll dp[58][5500];
  23. int seen[58][5050];
  24. int offset = 2500;
  25. ll sol (int sum, int idx) {
  26.     if (idx == n+1) return !sum;
  27.     if (seen[idx][sum+offset]) return dp[idx][sum+offset];
  28.     seen[idx][sum+offset] = 1;
  29.     return dp[idx][sum+offset] = sol(sum+des[idx], idx+1) + sol(sum, idx+1);
  30.     //cout << dp[idx][sum + offset] << endl;
  31. }
  32.  
  33. int main() {
  34.     SYNC
  35.     cin >> n >> a;
  36.     x.assign(n+1, 0);
  37.     for (int i = 1; i <= n; ++i) {
  38.         cin >> x[i];
  39.     }
  40.     for (int i = 1; i <= n; ++i) {
  41.         des[i] = x[i] - a;
  42.     }
  43.     cout << sol(0, 1) - 1 << endl;
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment