Submission #626548

#TimeUsernameProblemLanguageResultExecution timeMemory
626548victor_gaoBank (IZhO14_bank)C++17
100 / 100
111 ms16760 KiB
//#pragma GCC optimize("Ofast,unroll-loops,O3") //#pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native") #include<bits/stdc++.h> //#include<bits/extc++.h> //#pragma pack(1) #define fast ios::sync_with_stdio(0); cin.tie(0); #define int long long #define pii pair<int,int> #define x first #define y second #define N 20 using namespace std; //using namespace __gnu_pbds; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //typedef tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> order_multiset; //typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> order_set; int n,m,a[N+5],b[N+5]; int dp[(1LL<<N)+5],can[(1LL<<N)+5]; signed main(){ fast cin>>n>>m; for (int i=0;i<n;i++) cin>>a[i]; for (int i=0;i<m;i++) cin>>b[i]; int ans=0; for (int i=1;i<(1LL<<m);i++){ can[i]=-1; for (int j=0;j<m;j++){ if (i&(1LL<<j)){ if (can[i-(1LL<<j)]!=-1){ if (dp[i-(1LL<<j)]+b[j]==a[can[i-(1LL<<j)]]){ can[i]=can[i-(1LL<<j)]+1; dp[i]=0; } else if (dp[i-(1LL<<j)]+b[j]<a[can[i-(1LL<<j)]]){ dp[i]=dp[i-(1LL<<j)]+b[j]; can[i]=can[i-(1LL<<j)]; } } } } if (can[i]==n){ ans=1; break; } } if (ans) cout<<"YES\n"; else cout<<"NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...