Submission #1205146

#TimeUsernameProblemLanguageResultExecution timeMemory
1205146al-fattahBank (IZhO14_bank)C++20
19 / 100
69 ms328 KiB
/*


        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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...