제출 #843758

#제출 시각아이디문제언어결과실행 시간메모리
843758Pa_sha은행 (IZhO14_bank)C++17
0 / 100
17 ms4440 KiB
#include <bits/stdc++.h> #define int long long #define endl '\n' using namespace std; constexpr int mod=1e9+7; pair<int,bitset<2001>>dp[(1ll<<20)]; void solve() { int n,m; cin>>n>>m; int a[n+2]={0},b[m+1]; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=m;i++) { cin>>b[i]; } a[n+1]=1e8; dp[0].first=1; for(int s=1;s<(1ll<<m);s++) { for(int i=1;i<=m;i++) { if(!((s>>(i-1))&1)||dp[s].first>=n) { continue; } int h=(s^(1ll<<(i-1))); if(dp[h].first<dp[s].first) { continue; } if(dp[h].first>dp[s].first) { dp[s].first=dp[h].first; dp[s].second=(dp[s].second<<b[i]); if((dp[s].second>>a[dp[s].first]).any()) { dp[s].second>>=a[dp[s].first]; dp[s].first++; } continue; } dp[s].second|=(dp[s].second<<b[i]); if((dp[s].second>>a[dp[s].first]).any()) { dp[s].second>>=a[dp[s].first]; dp[s].first++; } } } cout<<(dp[(1ll<<m)-1].first>=n?"YES":"NO")<<endl; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t=1; // cin>>t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...