Submission #1326580

#TimeUsernameProblemLanguageResultExecution timeMemory
1326580mrcat2011Bank (IZhO14_bank)C++20
19 / 100
178 ms444 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; msll mst; for (ll i = 1; i <= n; ++i) { ll x; cin >> x; mst.insert(x); } vll v(m); cin >> v; msll mst2(all(v)); for (ll mask = 1; mask < (1 << m); ++mask) { ll sum = 0; vll useds; for (ll j = 0; j < m; ++j) { if (mask & (1 << j) && mst2.find(v[j]) != mst2.end()) { sum += v[j]; useds.emplace_back(v[j]); } } if (mst.find(sum) != mst.end()) { mst.erase(mst.find(sum)); for (ll x : useds) { mst2.erase(mst2.find(x)); } } } if (mst.empty()) { 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...