| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1287119 | michael12 | 은행 (IZhO14_bank) | C++20 | 109 ms | 39552 KiB |
#include<bits/stdc++.h>
#define ff first
#define ss second
using namespace std;
pair<int, int> dp[5000000];
int main(){
int n, m;
cin >> n >> m;
vector<int> a(n), b(m);
for(int i = 0; i < n; i++){
cin >> a[i];
}
for(int i = 0; i < m; i++){
cin >> b[i];
}
memset(dp, -1, sizeof(dp));
dp[0] = {0, 0};
for(int mask = 0; mask < (1 << m); mask++){
for(int j = 0; j < m; j++){
if(!(mask & (1 << j))) continue;
int pre = mask ^ (1 << j);
if(dp[pre].ff == -1) continue;
int her = dp[pre].ss + b[j];
int need = a[dp[pre].ff];
if(her < need){
dp[mask] = {dp[pre].ff, her};
}
if(her == need){
dp[mask] = {dp[pre].ff + 1, 0};
}
}
if(dp[mask].ff == n){
cout << "YES";
return 0;
}
}
cout << "NO";
return 0;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
