제출 #499594

#제출 시각아이디문제언어결과실행 시간메모리
499594f4t4nt은행 (IZhO14_bank)C++11
100 / 100
115 ms16716 KiB
#include <algorithm> #include <cmath> #include <ctime> #include <deque> #include <fstream> #include <functional> #include <iostream> #include <iomanip> #include <iterator> #include <list> #include <map> #include <math.h> #include <numeric> #include <queue> #include <random> #include <set> #include <sstream> #include <stack> #include <stdio.h> #include <string> #include <tuple> #include <unordered_set> #include <utility> #include <vector> #define ll long long #define pll pair<ll, ll> #define vi vector<int> #define vvi vector<vi> #define vl vector<ll> #define vvl vector<vl> #define vvvl vector<vvl> #define vvvvl vector<vvvl> #define vpll vector<pll> #define vvpll vector<vpll> #define plvl pair<ll, vl> #define vplvl vector<plvl> #define sl set<ll> #define spll set<pll> #define vsl vector<sl> #define ssl set<sl> #define plsl pair<ll, sl> #define vplsl vector<plsl> #define msl multiset<ll> #define mspll multiset<pll> #define vb vector<bool> #define vvb vector<vb> #define mll map<ll, ll> #define mlll map<ll, mll> #define mlvl map<ll, vl> #define mlpll map<ll, pll> #define mlvpll map<ll, vpll> #define mlsl map<ll, sl> #define mpllb map<pll, bool> #define vmll vector<mll> #define ql queue<ll> #define qpll queue<pll> #define fl float #define vf vector<fl> #define vvf vector<vf> #define str string #define vstr vector<str> #define mstrl map<str, ll> #define mcl map<char, ll> #define pb push_back #define elif else if #define sz(C) (ll) C.size() #define flip(C) reverse(C.begin(), C.end()) #define ssort(C) sort(C.begin(), C.end()) #define rsort(C) sort(C.begin(), C.end(), greater<>()) #define max_elem(C) *max_element(C.begin(), C.end()) #define min_elem(C) *min_element(C.begin(), C.end()) #define contains(C, x) find(C.begin(), C.end(), x) != C.end() #define FOR(x, e) for(ll x = 0; x < (ll) e; x++) #define FORR(x, e) for(ll x = (ll) e - 1; x >= 0; x--) #define FOB(x, b, e) for(auto x = (ll) b; x != (ll) e; x++) #define FOE(x, e, b) for(auto x = (ll) e - 1; x != (ll) b; x--) #define FOI(x, e, i) for(ll x = 0; x < (ll) e; x += (ll) i) #define FOBI(x, b, e, i) for(ll x = (ll) b; x < (ll) e; x += (ll) i) #define FORE(x, C) for(auto& x : C) using namespace std; int main() { ll N, M; cin >> N >> M; vl A(N), B(M); FOR(n, N) { cin >> A[n]; } FOR(m, M) { cin >> B[m]; } vpll dp(1 << M); FOR(x, 1 << M) { FOR(m, M) { if(x & (1 << m)) { continue; } pll tmp = { dp[x].first, dp[x].second + B[m] }; if(dp[x].first < N && A[dp[x].first] == tmp.second) { tmp.first++; tmp.second = 0; } dp[x | (1 << m)] = max(dp[x | (1 << m)], tmp); } } if(dp[(1 << M) - 1].first == N) { cout << "YES\n"; } else { cout << "NO\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...