Submission #1228914

#TimeUsernameProblemLanguageResultExecution timeMemory
1228914hgia은행 (IZhO14_bank)C++20
0 / 100
1 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=20;
int n,m,ans;
int val[(1<<N)+5],dp[N+5][(1<<N)+5],pre[N+5];
int a[25],b[25];
int main()
{
  freopen("bank.in","r",stdin);
  freopen("bank.out","w",stdout);
  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 mask=0;mask<(1<<m);mask++)
  {
    int sum=0;
    for(int j=0;j<m;j++)if(mask&(1<<j))sum+=b[j];
    val[mask]=sum;
  }
  for(int i=0;i<n;i++)for(int mask=0;mask<(1<<m);mask++)
  {
    dp[i][mask]=-1;
    if(i==0&&val[mask]==a[i])dp[i][mask]=1;
  }
  pre[0]=a[0];
  for(int i=1;i<n;i++)
  {
    pre[i]=pre[i-1]+a[i];
    for(int mask=0;mask<(1<<m);mask++){
      if(val[mask]==pre[i])
      {
        for(int mask1=mask;mask1>0;mask1=(mask1-1)&mask)
        {
          if(val[mask1]==a[i])
            dp[i][mask]=max(dp[i][mask],dp[i-1][mask^mask1]);
          if(dp[i][mask]==1)
          {
            mask=(1<<n);
            i=n;
            break;
          }
        }
      }
    }
  }
  for(int mask=0;mask<(1<<m);mask++)ans=max(ans,dp[n-1][mask]);
  if(ans==1)cout<<"YES";
  else cout<<"NO";
  return 0;
}

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:9:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |   freopen("bank.in","r",stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
bank.cpp:10:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |   freopen("bank.out","w",stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...