| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1205165 | Madhav_1608 | 은행 (IZhO14_bank) | C++17 | 109 ms | 16712 KiB | 
#include <iostream>
#include <stack>
#include <queue>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <climits>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <numeric>
#include <iomanip>
#include <cstring>
#include <stdio.h>
#include <assert.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<string> vs;
typedef vector<long long> vll;
typedef pair<ll,ll> pll;
#define double long double
const double eps = 1e-9; 
#define FOR(i,a,b) for(long long i=a;i<b;i++)
#define all(v) v.begin(),v.end()
template <typename I>
void print(vector<I> &v){
    FOR(i,0,v.size()){cout << v[i] << " ";}
    cout << "\n";
}
ll gcd(ll a,ll b){
    if(a==0){return b;}
    else if(b==0){return a;}
    else if(a<b){return gcd(b%a,a);}
    else{return gcd(a%b,b);}
}
ll lcm(ll a,ll b){
    return (a/gcd(a,b))*b;
}
void setIO(string name = "") {
    freopen((name + ".in").c_str(), "r", stdin); // see /general/input-output
    freopen((name + ".out").c_str(), "w", stdout);
}
void init_code(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
}
void solve(){
    // store very big numbers may mean log2
    ll n,m;
    cin >> n >> m;
    vll a(n);
    vll b(m);
    FOR(i,0,n){
        cin >> a[i];
    }
    FOR(i,0,m){
        cin >> b[i];
    }
    a.push_back(INT_MAX);
    vector<pll> dp(1ll<<m,{0,0});
    FOR(mask,1,(1ll<<m)){
        FOR(j,0,m){
            if((mask>>j)&1){
                pll alt = dp[mask^(1ll<<j)];
                if((b[j]+alt.second)==a[alt.first]){
                    alt.first++;
                    alt.second = 0;  
                }
                else{
                    alt.second += b[j];
                }
                dp[mask] = max(dp[mask],alt);
            }
        }
    }
    if(dp[(1ll<<m)-1].first==n){
        cout << "YES" << "\n";
    }
    else{
        cout << "NO" << "\n";
    }
}
signed main(){
    // setIO("movie");
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    // init_code();
    ll t=1;
    // cin >> t;
    while(t--){
        solve();
    }
    return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
