제출 #679223

#제출 시각아이디문제언어결과실행 시간메모리
679223vjudge1은행 (IZhO14_bank)C++17
100 / 100
315 ms90316 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define oo 1e9 vector<vector<int>> convertToMask(20001); int arr[20]; int dp[1 << 20][20]; int n; bool rec(int mask, int i){ if(i == n){ return true; } if(dp[mask][i] != -1) return dp[mask][i]; for (int j : convertToMask[arr[i]]) { if((mask & j) == 0){ if(rec(mask + j, i + 1)){ return dp[mask][i] = true; } } } return dp[mask][i] = false; } int main(){ memset(dp, -1, sizeof(dp)); int m; cin >> n >> m; int banknotes[m]; for (int i = 0; i < n; i++) { cin >> arr[i]; } for (int i = 0; i < m; i++) { cin >> banknotes[i]; } for (int mask = 1; mask < (1 << m); mask++) { int sum = 0; for (int i = 0; i < m; i++) { if(mask & (1 << i)){ sum += banknotes[i]; } } convertToMask[sum].push_back(mask); } bool ans = rec(0, 0); if(ans) cout << "YES"; else cout << "NO"; }

컴파일 시 표준 에러 (stderr) 메시지

bank.cpp: In function 'bool rec(int, int)':
bank.cpp:23:36: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   23 |                 return dp[mask][i] = true;
      |                        ~~~~~~~~~~~~^~~~~~
bank.cpp:27:24: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   27 |     return dp[mask][i] = false;
      |            ~~~~~~~~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...