Submission #520334

#TimeUsernameProblemLanguageResultExecution timeMemory
520334krit3379Bank (IZhO14_bank)C++17
100 / 100
102 ms8620 KiB
#include<bits/stdc++.h>
using namespace std;
#define N 20

int a[N],b[N];
pair<int,int> dp[1<<N];

int main(){
    int n,m,i,j,pre;
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)scanf("%d",&a[i]);
    for(i=0;i<m;i++)scanf("%d",&b[i]);
    for(i=0;i<(1<<m);i++){
        for(j=0;j<m;j++){
            if((i&(1<<j))==0)continue;
            pre=i^(1<<j);
            auto [last,sum]=dp[pre];
            if(sum+b[j]==a[last]){
                dp[i]=max(dp[i],make_pair(last+1,0));
            }
            else{
                dp[i]=max(dp[i],make_pair(last,sum+b[j]));
            }
        }
    }
    if(dp[(1<<m)-1].first==n)printf("YES");
    else printf("NO");
    return 0;
}

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~~
bank.cpp:11:26: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     for(i=0;i<n;i++)scanf("%d",&a[i]);
      |                     ~~~~~^~~~~~~~~~~~
bank.cpp:12:26: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     for(i=0;i<m;i++)scanf("%d",&b[i]);
      |                     ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...