제출 #1243565

#제출 시각아이디문제언어결과실행 시간메모리
1243565minhpk은행 (IZhO14_bank)C++20
100 / 100
137 ms8660 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
int z[1000005];
int t[1000005];

int dp[1<<20];
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int a,b;
    cin >> a >> b;
    for (int i=1;i<=a;i++){
         cin >> z[i];
         z[i]=z[i-1]+z[i];
    }
    for (int i=0;i<b;i++){
         cin >> t[i];
    }
    dp[0]=true;
    for (int i=0;i<(1<<b);i++){
         int cur=0;
         for (int j=0;j<b;j++){
              if (((i>>(j))&1)==1){
                  cur+=t[j];
              }
         }
         if (!dp[i]){
             continue;
         }
         if (cur==z[a]){
             cout << "YES" << "\n";
             return 0;
         }
         int pos=upper_bound(z+1,z+1+a,cur)-z;
         for (int j=0;j<b;j++){
              if (((i>>(j))&1)==0){
                  int sad=cur+t[j];
                  if (sad<=z[pos]){
                      dp[i|(1<<j)]=true;
                      if (sad==z[a]){
                          cout << "YES" << "\n";
                          return 0;
                      }
                  }

              }
         }
    }

    cout << "NO" << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...