제출 #1185876

#제출 시각아이디문제언어결과실행 시간메모리
1185876enzy은행 (IZhO14_bank)C++20
100 / 100
106 ms8644 KiB
#include <bits/stdc++.h>
using namespace std;
const int maxm=20;
const int inf=1e9+7;
int dp[(1<<maxm)], sobra[(1<<maxm)], v[maxm+1], notas[maxm];
int main()
{
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    memset(dp,-1,sizeof(dp)); memset(sobra,-1,sizeof(sobra));
    int n, m; cin >> n >> m;
    v[n]=inf;
    for(int i=0;i<n;i++) cin >> v[i];
    for(int i=0;i<m;i++) cin >> notas[i];
    dp[0]=0; sobra[0]=0;
    for(int mask=1;mask<(1<<m);mask++){
        for(int k=0;k<m;k++){
            if((mask&(1<<k))==0) continue;
            int ant=mask^(1<<k);
            if(dp[ant]==-1) continue; 
            int at=sobra[ant]+notas[k];
            if(at<v[dp[ant]]){
                dp[mask]=dp[ant];
                sobra[mask]=at;
            }else if(at==v[dp[ant]]){
                dp[mask]=dp[ant]+1;
                sobra[mask]=0;
            }
        }
    }
    if(dp[(1<<m)-1]==n) cout << "YES" << endl;
    else cout << "NO" << endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...