Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef pair<ll,ll>pll;
- typedef pair<ll,pair<ll,ll>>plll;
- #define bismillah; (ios_base:: sync_with_stdio(false),cin.tie(NULL));
- #define vll(v) v.begin(),v.end()
- #define all(x) x.rbegin(),x.rend()
- #define min3(a, b, c) min(a, min(b, c))
- #define max3(a, b, c) max(a, max(b, c))
- #define in freopen("input.txt", "r", stdin)
- #define out freopen("output.txt", "w", stdout)
- #define minheap int,vector<int>,greater<int>
- #define pb push_back
- #define eb emplace_back
- const int Max = 2e5 ;
- const int Mod = 1e9 + 7;
- const int N=1e6;
- int main()
- {
- ll n,c;
- cin>>n>>c;
- ll coins[n+1];
- bool dp[n+1][c+1];
- memset(dp,0,sizeof(dp));
- for(ll i=1;i<=n;i++) cin>>coins[i];
- for(ll i=0;i<=n;i++) dp[i][0]=1;
- for(ll i=1;i<=n;i++)
- {
- for(ll j=1;j<=c;j++)
- {
- dp[i][j]=dp[i-1][j];
- if(j-coins[i]>=0)dp[i][j]=(dp[i][j]|dp[i-1][j-coins[i]]);
- }
- }
- for(ll i=0;i<=c;i++)
- {
- cout<<i<<" "<<dp[n][i]<<endl;
- }
- if(dp[n][c])
- {
- cout<<"YES "<<endl;
- ll i=n,j=c;
- while(i and j)
- {
- if(dp[i-1][j]==0)
- {
- cout<<coins[i]<<" ";
- j-=coins[i];
- }
- i--;
- }
- cout<<endl;
- }
- else cout<<"NO"<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement