| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1344916 | Huseyn123 | Bank (IZhO14_bank) | C++20 | 79 ms | 16844 KiB |
#include <bits/stdc++.h>
#define MAX 21
#define int long long
#define MOD 1000000007
#define INF LLONG_MAX
using namespace std;
inline void USACO(string filename){
freopen((filename + ".in").c_str(), "r", stdin);
freopen((filename + ".out").c_str(), "w", stdout);
}
int dp[1<<20],dp2[1<<20];
int a[MAX],b[MAX];
int n,m;
void solve(){
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 i=0;i<(1<<20);i++){
dp[i]=-1;
}
dp[0]=0;
for(int i=0;i<(1<<m);i++){
for(int j=0;j<m;j++){
if((i&(1<<j))){
int cur=(i^(1<<j));
if(dp[cur]==-1){
continue;
}
if(dp[cur]==n){
dp[i]=n;
}
else if(dp2[cur]+b[j]==a[dp[cur]]){
if(dp[cur]+1>dp[i]){
dp[i]=dp[cur]+1;
dp2[i]=0;
}
}
else{
if(dp[cur]>dp[i]){
dp[i]=dp[cur];
dp2[i]=dp2[cur]+b[j];
}
}
}
}
if(dp[i]==n){
cout << "YES" << "\n";
return;
}
}
cout << "NO" << "\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;
//cin >> t;
//USACO("cbarn2");
while(t--){
solve();
}
}
| # | 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... | ||||
