Submission #1127937

#TimeUsernameProblemLanguageResultExecution timeMemory
1127937nolqfBank (IZhO14_bank)C++20
0 / 100
0 ms324 KiB
#include <fstream> #include <algorithm> #include <vector> using namespace std; using ll = long long; ifstream fin( "bank.in" ); ofstream fout( "bank.out" ); const int DIM = 20; const int INF = 2e9; int s[DIM], b[DIM]; int rem[1 << DIM]; int main() { ios_base::sync_with_stdio(0); fin.tie(0); int n, m; fin >> n >> m; for ( int i = 0; i < n; ++i ) { fin >> s[i]; } for ( int i = 0; i < m; ++i ) { fin >> b[i]; } vector<int> pref(1 << m, -1); pref[0] = 0; for ( int mask = 0; mask < (1 << m); ++mask ) { for ( int i = 0; i < m; ++i ) { int prev_mask = mask ^ (1 << i); if ( !(mask & (1 << i)) || pref[prev_mask] == -1 ) continue; int need = s[pref[prev_mask]]; int sum = rem[prev_mask] + b[i]; if ( sum == need ) { if ( pref[mask] < pref[prev_mask] + 1 ) { pref[mask] = pref[prev_mask] + 1; rem[mask] = 0; } } else if ( sum < need ) { if ( pref[mask] < pref[prev_mask] ) { pref[mask] = pref[prev_mask]; rem[mask] = sum; } } } if ( n == pref[mask] ) { fout << "YES\n"; return 0; } } fout << "NO\n"; fin.close(); fout.close(); 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...