# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
170988 | 2019-12-26T23:58:17 Z | bloopie | Ice Hockey World Championship (CEOI15_bobek) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 50; unordered_map<int,ll> memo[MAXN]; int n; ll mm; int a[MAXN]; int solve(int i,ll m) { if(m > mm) return 0; if(i == n) return 1; if(memo[i].find(m) != memo[i].end()) return memo[i][m]; int &ret = memo[i][m]; ret = 0; ret = solve(i + 1 , m + a[i]) + solve(i + 1 , m); return ret; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> mm; for(int i = 0 ; i < n ; i++) cin >> a[i]; cout << solve(0,0); }