Submission #885331

#TimeUsernameProblemLanguageResultExecution timeMemory
885331asli_bg은행 (IZhO14_bank)C++11
0 / 100
1 ms348 KiB
#include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #define FOR(i,a) for(int i=0;i<(a);i++) #define FORE(i,a,b) for(int i=(a);i<(b);i++) typedef long long ll; #define pb push_back #define se second #define fi first #define all(x) x.begin(),x.end() typedef pair<int,int> pii; typedef vector<int> vi; typedef vector<pii> vii; typedef vector<bool> vb; typedef vector<ll> vll; #define mid (l+r)/2 #define alt cout<<endl const int MAXN=25; const int INF=1e9; int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); //ifstream cin ("movie.in"); //ofstream cout ("movie.out"); int n,m; cin>>n>>m; vi dp (1<<m); multiset<int> people; vi money(m+1); FOR(i,n){ int el; cin>>el; people.insert(el); } FORE(i,1,m+1){ cin>>money[i]; } vb used(m+1,false); int cnt=0; dp[0]=0; FOR(i,m){ dp[1<<i]=money[i+1]; if(people.count(money[i+1])){ people.erase(people.find(money[i+1])); used[i]=true; cnt++; } } bool valid; vi eleman; FORE(s,1,(1<<m)){ if(__builtin_popcount(s)==1) continue; valid=true; FOR(j,m){ //if j.bit is used if(s & (1<<j)){ if(used[j]){ valid=false; } dp[s]+=dp[j+1]; eleman.pb(j+1); } } if(valid and people.count(dp[s])){ people.erase(people.find(dp[s])); for(auto el:eleman){ //cout<<el<<' '; used[el]=true; } //alt; cnt++; } eleman.clear(); } if(cnt==n) cout<<"YES"; else cout<<"NO"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...