제출 #541201

#제출 시각아이디문제언어결과실행 시간메모리
541201status_codingBank (IZhO14_bank)C++14
0 / 100
4 ms596 KiB
#include <bits/stdc++.h>

using namespace std;

long long n,m;
long long a[22], b[22];

long long sum[2000005];
vector<int> fr[1005];

bool dp[21][2000005];

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=m;i++)
        cin>>b[i];

    for(int mask=0; mask < (1<<m); mask++)
    {
        for(int k=0;k<m;k++)
            if((mask >> k) & 1)
                sum[mask] += b[k];

        if(sum[mask] <= 1000)
            fr[ sum[mask] ].push_back(mask);
    }

    for(int mask=0;mask<(1<<m);mask++)
        dp[0][mask] = true;

    for(int i=1;i<=n;i++)
        for(int mask=0; mask < (1<<m); mask++)
        {
            for(int nmask : fr[a[i]])
                if((mask | nmask) == mask && dp[i-1][mask - nmask])
                    dp[i][mask] = true;
        }

    bool ok=false;
    for(int mask=0;mask<(1<<m);mask++)
        if(dp[n][mask])
            ok=true;

    cout<<"YES";
    /*
    if(ok)
        cout<<"YES";
    else
        exit(1);
    */

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

bank.cpp: In function 'int main()':
bank.cpp:42:10: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
   42 |     bool ok=false;
      |          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...