Submission #593295

#TimeUsernameProblemLanguageResultExecution timeMemory
593295SummersBank (IZhO14_bank)C++14
100 / 100
305 ms198484 KiB
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
long long a[1100000], b[1100000], dp[1100000][23], n, m;

bool rec(long long mask,long long price,long long num)
{
   // cout<<mask<<" "<<price<<" "<<num<<endl;
    if(num==n+1)return 1;

    if(dp[mask][num]!=-1)return dp[mask][num];

    bool maxi=0;

    for(int i=1;i<=m;i++)
    {
        //cout<<b[i]<<" "<<endl;
        if(price>b[i] && !(mask&(1<<(i-1))))
        {//cout<<1;
            maxi=max(maxi,rec(mask|(1<<(i-1)),price-b[i],num));
        }
        if(price==b[i] && !(mask&(1<<(i-1))))
        {//cout<<1;
            maxi=max(maxi,rec(mask|(1<<(i-1)),a[num+1],num+1));
        }
    }
    return dp[mask][num]=maxi;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    long long i,j,k;

    cin>>n>>m;

    for(i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(j=1;j<=m;j++)
    {
        cin>>b[j];
    }
    memset(dp,-1,sizeof(dp));

    if(rec(0,a[1],1))cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

Compilation message (stderr)

bank.cpp: In function 'bool rec(long long int, long long int, long long int)':
bank.cpp:27:25: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   27 |     return dp[mask][num]=maxi;
      |            ~~~~~~~~~~~~~^~~~~
bank.cpp: In function 'int main()':
bank.cpp:36:19: warning: unused variable 'k' [-Wunused-variable]
   36 |     long long i,j,k;
      |                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...