제출 #737241

#제출 시각아이디문제언어결과실행 시간메모리
737241mariaclaraBank (IZhO14_bank)C++17
0 / 100
1 ms212 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = (1<<20)+10; #define pb push_back int n, m, salary[25], note[25]; bool dp[MAXN]; bool solve(int i, int mask) { // Marca se da pra formar os valores de 1 a i if(i>n) return 1; if(dp[mask]) return 0; dp[mask] = 1; for(int l=1, r=m; l<r; ) { if(mask&(1<<(l-1))) l++; if(mask&(1<<(r-1))) r--; if(note[l]+note[r]<salary[i]) l++; else if(note[l]+note[r]>salary[i]) r--; else if(solve(i+1, mask+(1<<(l-1))+(1<<(r-1)))) return 1; } return 0; } int main() { cin >> n >> m; for(int i = 1; i <= n; i++) cin >> salary[i]; for(int i = 1; i <= m; i++) cin >> note[i]; sort(note+1, note+1+m); if(solve(1,0)) cout << "YES\n"; else cout << "NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...