Submission #1326579

#TimeUsernameProblemLanguageResultExecution timeMemory
1326579mrcat2011Bank (IZhO14_bank)C++20
19 / 100
65 ms440 KiB
 //Mrcat template


#include <bits/stdc++.h>

//#include <bits/extc++.h>


using namespace std;

//using namespace __gnu_pbds;


typedef int64_t ll;

typedef string str;

typedef double dbl;

typedef char boolean;   

//typedef size_t sz;


#define MOD 1000000000

#define println(n) cout << n << endl

#define print(n) cout << n << ' '

#define input(n) cin >> n;

#define vll vector<ll> 

#define vc vector<char>

#define vstr vector<str>

#define vdbl vector<dbl>

#define vbln vector<boolean>

#define vpll vector<pair<ll, ll>>

#define vplb vector<pair<ll, boolean>>  

#define vvl  vector<vector<ll>>

//#define sum(v) accumulate(all(v), 0LL) 

#define all(a) a.begin(), a.end()

#define mll map<ll, ll>

#define mcl map<char, ll>

#define mlb map<ll, boolean>

#define mcb map<char, bool>

#define mstrl map<str, ll>

#define mlstr map<ll, str>

#define sll set<ll> 

#define sc set<char>

#define sstr set<str>

#define sdbl set<dbl>

#define sbln set<boolean>

#define msll multiset<ll> 

#define msc multiset<char>

#define msstr multiset<str>

#define msdbl multiset<dbl>

#define msbln multiset<boolean>

#define pll pair<ll, ll>

//#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>

#define hurryupmrcat ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);


template<typename T>

istream& operator>>(istream& is, vector<T>& v) {

    for (T& x : v) is >> x;

    return is;

}


template<typename T>

ostream& operator<<(ostream& os, vector<T>& v) {

    for (T x : v) os << x << ' ';

    return os;

}


template<typename T>

ostream& operator<<(ostream& os, set<T>& st) {

    for (T x : st) os << x << ' ';

    return os;

}


template<typename T>

ostream& operator<<(ostream& os, multiset<T>& mst) {

    for (T x : mst) os << x << ' ';

    return os;

}


vll stov(str s) {

    vll v;

    for (char c : s) {

        v.emplace_back(c - '0');

    }

    return v;

}



const ll MAX = 2e5 + 5;


struct BIT {

    ll n;

    vll ft;


    BIT(ll N) {

        n = N + 10;

        ft.assign(n + 5, 0);

    }


    void add(ll idx, ll val) {

        for (idx; idx <= n; idx += (idx & (-idx))) {

            ft[idx] += val;

        }

    }


    ll get(ll idx) {

        ll ret = 0;

        

        for (idx; idx >= 0; idx -= (idx & (-idx))) {

            ret += ft[idx];

        }


        return ret;

    }

};


bool Comp(pll p1, pll p2) {

    if (p1.second < p2.second) return false;

    return true;

}

ll Max (ll a, ll b) {
    if (a >= b) return a;
    return b;
}

ll Min (ll a, ll b) {
    if (a >= b) return b;
    return a;
}

void solve () {
    ll n, m; cin >> n >> m;


    ll x; cin >> x;

    vll v(m); cin >> v;

    for (ll mask = 1; mask < (1 << m); ++mask) {
        ll sum = 0;
        for (ll j = 0; j < m; ++j) {
            if (mask & (1 << j)) {
                sum += v[j];
            }
        }

        if (sum == x) {
            cout << "YES" << endl;
            return;
        }
    }

    cout << "NO" << endl; return;
}


int main(int argc, char const *argv[]) {  

    hurryupmrcat

    ll t = 1;

    //cin >> t;

   

    for (size_t cs = 1; cs <= t; ++cs) {

        solve();

    }

    return 0;

} 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...