#include <bits/stdc++.h>
using namespace std;
// ---- Pragmas for GCC ----
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
// ---- Macros ----
#define int long long
#define pb push_back
#define all(x)(x).begin(), (x).end()
#define sz(x)((int)(x).size())
#define Airplane ios::sync_with_stdio(false); cin.tie(nullptr);
const int INF = 1e18;
const int MOD = 1e9 + 7;
const int N = 1000;
int f[N];
int dp[N], dp2[N];
/** int a[N] , t[4 * N] , b[N];
void build(int v , int tl , int tr) {
if(tl == tr) {
t[v] = a[tl];
return;
}
int mid = (tl + tr) / 2;
build(v + v , tl , mid);
build(v + v + 1, mid + 1, tr);
t[v] = max(t[v + v] , t[v + v + 1]);
}
void upd(int v , int tl , int tr , int pos , int x) {
if(tl == tr) {
t[v] = x;
return;
}
int mid = (tl + tr) / 2;
if(pos <= mid) {
upd(v + v , tl , mid , pos , x);
} else {
upd(v + v + 1 , mid + 1 , tr , pos , x);
}
t[v] = max(t[v + v] , t[v + v + 1]);
}
int get(int v , int tl , int tr , int k) {
if(t[v] < k) {
return 0;
}
if(tl == tr) {
t[v] -= k;
return tl;
}
int ans = 0;
int mid = (tl + tr) / 2;
if(t[v + v] >= k) {
ans = get(v + v , tl , mid , k);
} else {
ans = get(v + v + 1 , mid + 1 , tr , k);
}
t[v] = max(t[v + v] , t[v + v + 1]);
return ans;
}
**/
int binpow(int b, int e, int mod) {
int res = 1;
while (e > 0) {
if (e % 2 == 1) {
res = (res * b) % mod;
}
b = (b * b) % mod;
e /= 2;
}
return res;
}
signed main() {
Airplane
int n , m;
cin >> n >> m;
vector<int> a(n);
for(int i = 0; i < n; i++) {
cin >> a[i];
}
vector<int> b(m);
for(int i = 0; i < m; i++) {
cin >> b[i];
}
if(n == 1) {
bool ok = false;
int ans = a[0];
int x = 1 << m;
for(int mask = 0; mask < x; mask++) {
int sum = 0;
for(int i = 0; i < m; i++) {
if((1 << i) & mask) {
sum += b[i];
}
}
if(sum == ans) {
ok = true;
break;
}
}
if(f) cout << "YES\n";
else cout << "NO\n";
} else {
multiset<int> s;
for(int i = 0; i < m; i++) {
s.insert(b[i]);
}
bool f = true;
for(int i = 0; i < n; i++) {
auto it = s.find(a[i]);
if(it != s.end()) {
s.erase(a[i]);
} else {
f = false;
break;
}
}
if(!f) {
cout << "NO\n";
} else {
cout << "YES\n";
}
}
}
# | 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... |