제출 #846985

#제출 시각아이디문제언어결과실행 시간메모리
846985vjudge1은행 (IZhO14_bank)C++17
100 / 100
492 ms173000 KiB
#include <bits/stdc++.h> using namespace std; const int N = 21; vector<int> possibleMasks[N]; int memo[N][(1 << N)], n, m; int solve(int i, int msk) { if(i == n) return 1; int &ret = memo[i][msk]; if(~ret) return ret; ret = 0; for(int new_msk : possibleMasks[i]) { if((msk & new_msk) == new_msk) { ret += solve(i + 1, msk ^ new_msk); ret = min(ret, 1); } } return ret; } void solve() { cin >> n >> m; vector<int> a(n), b(m); for(int &x : a) cin >> x; for(int &y : b) cin >> y; memset(memo , -1 , sizeof(memo)); for(int msk = 1 ; msk < (1 << m) ; ++msk) { int sum = 0; for(int i = 0 ; i < m ; ++i) { if((msk >> i) & 1) { sum += b[i]; } } for(int i = 0 ; i < n ; ++i) { if(a[i] == sum) { possibleMasks[i].push_back(msk); } } } cout << (solve(0, (1 << m) - 1) ? "YES" : "NO" ) << "\n"; } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); #ifndef ONLINE_JUDGE #else #endif int tc = 1, cs = 1; // cin >> tc; while(tc--){ solve(); } return 0; }

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

bank.cpp: In function 'int main()':
bank.cpp:52:17: warning: unused variable 'cs' [-Wunused-variable]
   52 |     int tc = 1, cs = 1;
      |                 ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...