제출 #1336682

#제출 시각아이디문제언어결과실행 시간메모리
1336682pn197은행 (IZhO14_bank)C++17
19 / 100
82 ms8560 KiB
#include <bits/stdc++.h>
using namespace std;

const int N=24, MASK=(1<<20)+4, mod=1e9+7;
int n, m, a[N], b[N], dp[MASK], lastsum[MASK];
bool ans;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    cin >> n >> m;
    for(int i=1;i<=n;++i)
        cin >> a[i];
    for(int j=1;j<=m;++j)
        cin >> b[j];
    for(int mask=1;mask<(1<<m);++mask){
        for(int i=1;i<=m;++i){
            if(mask&(1<<(i-1))){
                int lastmask=mask^(1<<(i-1));
                int cnt=dp[lastmask];
                if(cnt==n) continue;
                if(lastsum[lastmask]+b[i]<a[cnt+1])
                    lastsum[mask]=lastsum[lastmask]+b[i];
                else if(lastsum[lastmask]+b[i]==a[cnt+1]){
                    if(dp[mask]<dp[lastmask]+1){
                        dp[mask]=dp[lastmask]+1;
                        lastsum[mask]=0;
                    }
                }
                if(dp[mask]==n) ans=1;
            }
        }
    }
    if(ans)
        cout << "YES";
    else cout << "NO";
    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...