Submission #1184025

#TimeUsernameProblemLanguageResultExecution timeMemory
1184025hmms127Bank (IZhO14_bank)C++20
0 / 100
136 ms327680 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; template<typename key> // for ordered set or indexed set using ordered_set= tree<key, null_type, less_equal<key>, rb_tree_tag, tree_order_statistics_node_update>; // less_equal #define f1(n) for(int i=0;i<n;i++) #define e '\n' #define f2(m,n,q) for(int i=m;i<n;i+=q) #define f3(n) for(int j=0;j<n;j++) #define f4(m,n,q) for(int j=m;j<n;j+=q) #define speed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define int long long #define pb push_back #define pi 3.14159265358979323846 //f^=1 == if(f==0)f=1 else f=0 int setbit(int n,int idx,int val){return (val ? ((1LL<<idx)|n):(~(1LL<<idx)&n));} int getbit(int n,int idx){return ((n>>idx)&1LL);} typedef long long ll; const int N=21; const int mod=1e9+7; const int inf=1e9,sqr=448; const int dx[]={-1,1,0,0}; const int dy[]={0,0,-1,1}; int n,m,a[N],b[N],dp[N][1<<N];bool vis[N]; bool rec(int idx,int mak){ if(idx==n)return 1; int& ret=dp[idx][mak]; if(ret!=-1)return ret; int newmask=mak; for(int mask=0;mask<(1<<m);++mask){ vector<int> v;bool valid=true;int sm=0; for(int i=0;i<m;i++){ if(getbit(mask,i)){ if(getbit(mak,i)){ valid=false; break; } else v.pb(i),sm+=b[i]; } } if(valid&&sm==a[idx]){ for(auto it:v)newmask=setbit(newmask,it,1); if(rec(idx+1,newmask))return ret=true; //for(auto it:v)newmask=setbit(newmask,it,0); } } return ret=false; } int32_t main() { speed; int tt=1,cnt=1;//cin>>tt; while(tt--){ //freopen("bank.in","r",stdin); //freopen("bank.out","w",stdout); cin>>n>>m; f1(n)cin>>a[i];f1(m)cin>>b[i]; memset(dp,-1,sizeof dp); cout<<(rec(0,0) ? "YES":"NO")<<e; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...