Submission #1245153

#TimeUsernameProblemLanguageResultExecution timeMemory
1245153datluong_04Bank (IZhO14_bank)C++20
100 / 100
287 ms27468 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define maxn 21 #define FOR(i , a , b) for(int i = a ; i <= b; i++) #define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define BIT(mask , i) (mask >> i & 1) ll a[maxn] , b[maxn] , cost[1 << maxn]; int dp[1 << maxn]; int main(){ if(fopen("bank.in" , "r")){ freopen("bank.in" , "r" , stdin); freopen("bank.out" , "w" , stdout); } FAST; int n , m; cin >> n >> m; FOR(i , 0 , n - 1) cin >> a[i]; FOR(i , 0 , m - 1) cin >> b[i]; ll sumA = 0; FOR(i , 0 , n - 1) sumA += a[i]; ll sumB = 0; FOR(j , 0 , m - 1) sumB += b[j]; if(sumA > sumB){cout << "NO\n"; return 0;} sort(a , a + n , greater<ll>()); FOR(mask , 1 , (1 << m) - 1){ int lsb = mask & (-mask); int j = __builtin_ctz(lsb); cost[mask] = cost[mask ^ lsb] + b[j]; } FOR(mask , 0 , (1 << m) - 1) dp[mask] = -1; dp[0] = 0; int full_mask = (1 << m) - 1; unordered_map<ll,vector<ll>> mp; FOR(mask , 0 , (1 << m) - 1) mp[cost[mask]].push_back(mask); FOR(mask , 0 , (1 << m) - 1){ int k = dp[mask]; if(k < 0 || k == n) continue; ll need = a[k]; auto it = mp.find(need); if(mp.end() == it) continue; for(int sub : it -> second){ if( (sub & mask) == 0){ int new_mask = mask | sub; dp[new_mask] = max(dp[new_mask] , k + 1); } } } bool ok = false; FOR(mask , 0 , (1 << m) - 1) if(dp[mask] == n){ ok = true; break; } cout << (ok ?"YES" :"NO"); }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:17:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         freopen("bank.in" , "r" , stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:18:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |         freopen("bank.out" , "w" , stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...