Submission #1188265

#TimeUsernameProblemLanguageResultExecution timeMemory
1188265ffeyyaae_Bank (IZhO14_bank)C++20
100 / 100
92 ms8644 KiB
#include <bits/stdc++.h> using namespace std; const int N = (1<<20); int n, m; int keep[21], bank[21]; pair<int,int> dp[N]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for( int i=0;i<n;i++ ) cin >> keep[i]; for( int i=0;i<m;i++ ) cin >> bank[i]; for( int i=0;i<N;i++ ) dp[i] = {-1, -1}; dp[0] = {0, 0}; for( int mask=0;mask<(1<<m);mask++ ) { for( int i=0;i<m;i++ ) { if( !( mask & (1<<i) ) ) continue; int prev = (mask ^ (1<<i)); auto [peo, left] = dp[prev]; if( peo == -1 ) continue; if( left+bank[i] < keep[peo] ) { dp[mask] = { peo, left+bank[i] }; } else if( left+bank[i] == keep[peo] ) { dp[mask] = { peo+1, 0 }; } } if( dp[mask].first == 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...