제출 #937677

#제출 시각아이디문제언어결과실행 시간메모리
937677ibrosh은행 (IZhO14_bank)C++17
52 / 100
53 ms14680 KiB
// #pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include<bits/stdc++.h> #define ll long long using namespace std; template<typename... T> void see(T&... args) { ((cin >> args), ...);} template<typename... T> void put(T&&... args) { ((cout << args << " "), ...);} template<typename... T> void putl(T&&... args) { ((cout << args << " "), ...); cout<<'\n';} #define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); } void err(istream_iterator<string> it) {} template<typename T, typename... Args> void err(istream_iterator<string> it, T a, Args... args) {cerr << *it << "=" << a << ", "; err(++it, args...);} #define du long double #define m_p make_pair #define pb push_back #define pii pair<int,int> #define piii pair<pii,int> #define vi vector<int> #define vii vector<pii> #define viii vector<pair<int,pii> > #define si set<int> #define sii multiset<pii> #define siii set<pair<int,pii> > #define F first #define S second #define pre precision #define sz size() #define all(x) x.begin(),x.end() #ifndef ONLINE_JUDGE #define OK cout << __LINE__ << "| "<< "---------------------------OK-----------------------" << endl; #define deb(x) cout << __LINE__ << "| "<< #x << " = " << x << endl; #else #define OK #define deb(x) #endif #define nl cout<<'\n' #define OPEN freopen ("exam.in","r" , stdin), freopen ("exam.out","w",stdout) const ll mod=1e9+7; const ll inf=1e18; const du PI=3.14; const int N=1e6+9; const int dx[]={-1,0,1,0}; const int dy[]={0,-1,0,1}; bool dp[29][N]; int a[N]; int b[N]; void Teemka_abi(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=0;i<m;i++){ cin>>b[i]; } for(int i=0;i<(1<<m);i++){ dp[0][i]=1; } for(int i=1;i<=n;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]; } } if(sum==a[i]){ for(int msk=0;msk<(1<<m);msk++){ bool f=0; for(int j=0;j<m;j++){ if(msk&(1<<j) and mask&(1<<j)){ f=1; break; } } if(dp[i-1][msk] and !f){ dp[i][mask|msk]=1; } } } } } bool f=0; for(int i=0;i<(1<<m);i++){ if(dp[n][i]){ f=dp[n][i]; } } if(f){ cout<<"YES"; } else{ cout<<"NO"; } } signed main(){ // OPEN; int tt=1; // cin>>tt; while(tt--){ Teemka_abi(); nl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...