Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define SYNC ios::sync_with_stdio(0);
- #define F first
- #define S second
- #define endl '\n'
- using namespace std;
- using ll = long long int;
- using ii = pair<int, int>;
- using vii = vector<ii>;
- using vi = vector<int>;
- using graph = vector<vi>;
- const int INF = 0x3f3f3f3f;
- const int MAXN = 58;
- const ll mod = 1000000007;
- vi x;
- int des[MAXN], n, a;
- ll dp[58][5500];
- int seen[58][5050];
- int offset = 2500;
- ll sol (int sum, int idx) {
- if (idx == n+1) return !sum;
- if (seen[idx][sum+offset]) return dp[idx][sum+offset];
- seen[idx][sum+offset] = 1;
- return dp[idx][sum+offset] = sol(sum+des[idx], idx+1) + sol(sum, idx+1);
- //cout << dp[idx][sum + offset] << endl;
- }
- int main() {
- SYNC
- cin >> n >> a;
- x.assign(n+1, 0);
- for (int i = 1; i <= n; ++i) {
- cin >> x[i];
- }
- for (int i = 1; i <= n; ++i) {
- des[i] = x[i] - a;
- }
- cout << sol(0, 1) - 1 << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment