// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ll n, m; cin >> n >> m;
vector<ll> a(n);
for(ll&A:a) cin >> A;
sort(a.begin(), a.end());
vector<vector<ll>> dp(n+1, vector<ll>(1<<m, 1e18));
dp[0][0] = 0;
for (ll i = 1; i <= n; i++){
for (ll mask{}; mask < (1<<m); mask++){
for (ll b{}; b < m; b++){
if ((1<<b) | mask){
if (dp[i-1][mask] == (ll)1e18) continue;
dp[i][mask] = min(dp[i-1][mask] - a[i+1], dp[i][mask]);
}
}
if (!dp[i][mask] == 0) dp[i][mask] = 1e18;
}
}
for (ll i{}; i < (1<<m); i++){
if (dp[n][i] == 0){ cout << "YES"; return 0; }
}
cout << "NO";
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |