/*
In the name of Allah
*/
#include <bits/stdc++.h>
#define ll long long
#define llu unsigned long long
#define ld long double
#define endl "\n"
using namespace std;
/*
Inshaallah
*/
using namespace std;
const ll val = 1e5 + 5, mod = 998244353;
ll sum[8 * val], maxsum[8 * val], pref[8 * val], suf[8 * val];
const ll BLOCK_SIZE = 710;
ll dp[2 * val], q = 0;
vector<int> vc;
ll binpow(ll x , ll n)
{
ll a;
cin>>a;
}
/*
BBBBBLLLLLLLOOOOOOOCCCCCCKKKKK
void build()
{
ll blockIndex = -1, mn = 1e9;
for (int i = 0; i < a; i++)
{
if (i % BLOCK_SIZE == 0)
{
if(i != 0)
{
block[blockIndex] = mn;
}
mn = 1e9;
blockIndex ++;
}
mn = min(mn, arr[i]);
}
}
void update(ll index, ll value) {
ll blockIndex = index / BLOCK_SIZE, mn = 1e9;
arr[index] = value;
for(ll i = blockIndex * BLOCK_SIZE; i < (blockIndex + 1) * BLOCK_SIZE; i ++)
{
mn = min(mn, arr[i]);
block[blockIndex] = mn;
}
}
long long query(ll l, ll r) {
long long mn = 1e9;
ll startBlock = l / BLOCK_SIZE;
ll endBlock = r / BLOCK_SIZE;
if (startBlock == endBlock)
{
for (ll i = l; i <= r; i++)
{
mn = min(mn, arr[i]);
}
}
else
{
for (ll i = l; i < (startBlock + 1) * BLOCK_SIZE; i++)
{
mn = min(mn, arr[i]);
}
for (ll i = startBlock + 1; i < endBlock; i ++)
{
mn = min(mn, block[i]);
}
for (ll i = endBlock * BLOCK_SIZE; i <= r; i ++)
{
mn = min(mn, arr[i]);
}
}
return mn;
}
MMMMMMMMMMMOOOOOOOUUUUUU
void add(ll x)
{
cnt = cnt - (mp[arr[x]] * mp[arr[x]] * arr[x]);
mp[arr[x]] ++;
cnt = cnt + (mp[arr[x]] * mp[arr[x]] * arr[x]);
}
void del(ll x)
{
cnt = cnt - (mp[arr[x]]*mp[arr[x]]*arr[x]);
mp[arr[x]] --;
cnt = cnt + (mp[arr[x]]*mp[arr[x]]*arr[x]);
}
*/
ll get(ll i, ll l, ll r, ll lx, ll rx)
{
ll mid = (l + r) / 2;
if(l >= lx and r <= rx)
{
return sum[i];
}
else if (r < lx or l > rx)
{
return 0;
}
return get(2 * i, l, mid, lx, rx) + get(2 * i + 1, mid + 1, r, lx, rx);
}
void push(int i, int x)
{
sum[i] = x;
}
void sett(int i)
{
sum[i] = sum[2 * i] + sum[2 * i + 1];
}
void upd(ll i, ll l, ll r, ll lx, ll rx, ll x)
{
if(lx <= l and rx >= r)
{
push(i, x);
return;
}
if(lx > r or rx < l)
{
return;
}
ll mid = (l + r) / 2;
upd(2 * i, l, mid, lx, rx, x);
upd(2 * i + 1, mid + 1, r, lx, rx, x);
sett(i);
}
ll ar[2000];
void solve()
{
int a, b;
cin >> a >> b;
int l = (1 << b);
int ar[a], br[b];
cin >> ar[0];
for(int j = 0; j < b; j ++)
{
cin >> br[j];
}
for(int i = 0; i < l; i ++)
{
int s = 0;
for(int j = 0; j < b; j ++)
{
if((i & (1 << j)) != 0)
{
s = s + br[j];
}
}
if(s == ar[0])
{
cout << "YES" << endl;
return;
}
}
cout << "NO" << endl;
}
int main()
{
int t = 1;
///cin >> t;
while(t --)
{
solve();
}
}
/*
Alhamdullilah
*/
Compilation message (stderr)
bank.cpp: In function 'long long int binpow(long long int, long long int)':
bank.cpp:34:1: warning: no return statement in function returning non-void [-Wreturn-type]
34 | }
| ^
# | 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... |