| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1302162 | nguthianmangcay | 은행 (IZhO14_bank) | C++20 | 344 ms | 55080 KiB |
#include<bits/stdc++.h>
using namespace std;
const int N=22;
const int MAS = (1<<22);
const int VL = 1e3+3;
const long long inf=1e18+3;
#define ll long long
#define fi first
#define se second
#define VOI void
#define MASK(i) (1LL<<i)
vector<int>premask[VL];
int dp[N][MAS];
int a[N],b[N];
VOI jiangly(){
int n,m;
cin>>n>>m;
int maxa = 0;
for(int i=1;i<=n;i++){
cin>>a[i];
maxa = max(maxa,a[i]);
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
int tt = MASK(m) - 1;
for(int mask=0;mask<=tt;mask++){
int sum = 0;
for(int i=1;i<=m;i++){
if(mask & MASK(i-1)){
sum += b[i];
}
}
if(sum <= maxa){
premask[sum].push_back(mask);
}
}
dp[0][0] = 1;
for(int i=0;i<n;i++){
for(int mask=0;mask<=tt;mask++){
if(dp[i][mask]){
int nxt = i+1;
int nxtval = a[i+1];
for(int add : premask[nxtval]){
if(!(mask & add)){
int nmask = mask | add;
dp[nxt][nmask] |= dp[i][mask];
}
}
}
}
}
int res = 0;
for(int mask=0;mask<=tt;mask++){
res = max(res,dp[n][mask]);
}
if(res)cout<<"YES";
else cout<<"NO";
}
int main(){
cin.tie(0)->sync_with_stdio(0);
if(fopen("QUANSENSEI.inp","r")){
freopen("O(0).inp","r",stdin);
}
if(fopen("bank.in","r")){
freopen("bank.in","r",stdin);
freopen("bank.out","w",stdout);
}
// if(fopen("input.txt","r")){
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
// }
jiangly();
// cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
