This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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);
vi people (n);
vi money(m);
FOR(i,n){
cin>>people[i];
}
FOR(i,m){
cin>>money[i];
}
sort(all(people));
sort(all(money));
FOR(i,m){
dp[1<<i]=money[i];
}
int bas=0;
vb used(n,false);
FOR(i,n){
FORE(s,bas,(1<<m)){
FOR(j,m){
if(s & (1<<j)){
dp[s]+=dp[j];
if(dp[s]==people[i]){
used[i]=true;
bas=s;
break;
}
}
}
}
}
bool flag=true;
for(auto el:used){
if(!el){
flag=false;
break;
}
}
if(flag) cout<<"YES";
else cout<<"NO";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |