제출 #346711

#제출 시각아이디문제언어결과실행 시간메모리
346711knightron0은행 (IZhO14_bank)C++14
0 / 100
328 ms262144 KiB
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fr first #define sc second #define clr(a) memset(a, 0, sizeof(a)) #define sz(x) x.size() #define printvector(arr) for (auto it = arr.begin(); it != arr.end(); ++it) cout<<*it<<" "; cout<<endl; #define REP(i, n) for (int i = 0; i < n; i++) #define FOR(i, x, y) for (int i = x; i < y; i++) #define DEC(i, x, y) for (int i = x; i >= y; i--) #define all(v) v.begin(), v.end() #define min3(a, b, c) min(a, min(b, c)) #define max3(a, b, c) max(a, max(b, c)) #define alla(a, n) a, a + n #define gcd(a, b) __gcd(a, b) #define lcm(a, b) (a * b)/gcd(a, b) #define int long long int #define ull unsigned long long #define printarray(arr, n) for(int i= 0;i<n;i++) cout<<arr[i]<<' '; cout<<endl; #define printvecpairs(vec) for(auto it: vec) cout<<it.fr<<' '<<it.sc<<endl; #define initdp(a) memset(a, -1, sizeof(a)); #define endl '\n' #define float long double using namespace std; const int MOD = 1e9 + 7; const int INF = 2e15; const int MAXN = 20; int a[MAXN], b[MAXN]; int n, m; vector<int> poss[1006]; int dp[MAXN][(1LL<<MAXN)]; bool solve(int idx, int mask){ if(idx == n) return 1; if(dp[idx][mask] != -1){ return dp[idx][mask]; } bool ans = 0; for(auto mask2: poss[a[idx]]){ if(mask2&mask == 0){ ans |= solve(idx+1, mask2||mask); } } return dp[idx][mask] = ans; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); initdp(dp); cin>>n>>m; for(int i= 0;i<n;i++){ cin>>a[i]; } for(int i = 0;i<m;i++){ cin>>b[i]; } for(int mask = 0;mask<(1LL<<m);mask++){ int sum =0; for(int i = 0;i<m;i++){ if((1LL<<i) & mask){ sum += b[i]; } } poss[sum].pb(mask); } if(solve(0, 0)){ cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } return 0; }

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

bank.cpp: In function 'bool solve(long long int, long long int)':
bank.cpp:44:17: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   44 |   if(mask2&mask == 0){
      |            ~~~~~^~~~
bank.cpp:48:23: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   48 |  return dp[idx][mask] = ans;
      |         ~~~~~~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...