Submission #1287119

#TimeUsernameProblemLanguageResultExecution timeMemory
1287119michael12Bank (IZhO14_bank)C++20
100 / 100
109 ms39552 KiB
    #include<bits/stdc++.h>
    #define ff first
    #define ss second
    using namespace std;
    pair<int, int> dp[5000000];
    int main(){
        int n, m;
        cin >> n >> m;
        vector<int> a(n), b(m);
        for(int i = 0; i < n; i++){
          cin >> a[i];
        }
        for(int i = 0; i < m; i++){
          cin >> b[i];
        }
        memset(dp, -1, sizeof(dp));
        dp[0] = {0, 0};
        for(int mask = 0; mask < (1 << m); mask++){
            for(int j = 0; j < m; j++){
                if(!(mask & (1 << j))) continue;
                int pre = mask ^ (1 << j);
                if(dp[pre].ff == -1) continue;
                int her = dp[pre].ss + b[j];
                int need = a[dp[pre].ff];
                if(her < need){
                    dp[mask] = {dp[pre].ff, her};
                }
                if(her == need){
                    dp[mask] = {dp[pre].ff + 1, 0};
                }
            }
            if(dp[mask].ff == n){
            cout << "YES";
            return 0;
            }
        }

        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...