답안 #752688

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
752688 2023-06-03T12:24:15 Z beaconmc 은행 (IZhO14_bank) C++14
0 / 100
2 ms 340 KB
#include <bits/stdc++.h>
typedef long long ll;

#define FOR(i,x,y) for (ll i = (x); i < (y); i++)

using namespace std;

set<ll> dp[21];
map<ll, vector<ll>> idk;

//cd "/home/s/saco06/Desktop/" && g++ bank.cpp -o bank && "/home/s/saco06/Desktop/"bank
int main(){
    ll n,m;
    cin >> n >> m;
    ll sum1=0, sum2=0;
    vector<ll> lis1(n);
    vector<ll> lis2(m);
    FOR(i,0,n){
        cin >> lis1[i];
        sum1 += lis1[i];
    }
    FOR(i,0,m){
        cin >> lis2[i];
        sum2 += lis2[i];
    }

    if (sum1 > sum2){
        cout << "NO";
        return 0;
    }
    for (auto&i : lis1){
        idk[i] = {};
    }

    FOR(i, 0, (1<<m)){
        ll sum = 0;
        FOR(j,0,m){
            if (i & (1<<j)){
                sum += lis2[j];
            }
        }
        if (idk.count(sum)){
            idk[sum].push_back(i);
        }
    }
    sort(lis1.begin(), lis2.end());
    for (auto&i : idk[lis1[0]]){
        dp[0].insert(i);
    }
    FOR(i, 0, n-1){
        for (auto&j : dp[i]){
            for (auto&k : idk[lis1[i+1]]){
                if (j&k) continue;
                dp[i+1].insert(j|k);
            }
        }
    }
    if (dp[n-1].size()){
        cout << "YES";
    }else{
        cout << "NO";
    }




}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 340 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -