Submission #1098183

#TimeUsernameProblemLanguageResultExecution timeMemory
1098183nmtsBank (IZhO14_bank)C++17
100 / 100
82 ms8796 KiB
#include <bits/stdc++.h> #define file(name) freopen(name".inp" , "r" , stdin),freopen(name".out" , "w" , stdout); #define faster ios_base :: sync_with_stdio(false) , cin.tie(0) , cout.tie(0) #define pii pair < int , int > #define fi first #define se second #define endl '\n' #define ll long long const int maxn = 1e6 + 6; const int mod= 1e9 + 7; const ll INFLL= 3e18 + 5; const int INF = 1e9 + 5 ; const int LOG = 20 ; const int block_sz = 316; template<class T> bool minimize(T& a, const T& b) { return b < a ? a = b, 1 : 0; } template<class T> bool maximize(T& a, const T& b) { return a < b ? a = b, 1 : 0; } using namespace std; int n , m; int sal[maxn]; int tenge[maxn]; pii dp[(1 << 20) + 6]; void solve() { cin >> n >> m; for (int i = 0 ; i < n ; ++i) cin >> sal[i]; for (int i = 0 ; i < m ; ++i) cin >> tenge[i]; for (int Mask = 0 ; Mask < (1 << m) ; ++Mask) dp[Mask] = make_pair(-1 , -1); dp[0] = make_pair(0 , 0); for (int Mask = 1 ; Mask < (1 << m) ; ++Mask) for (int i = 0 ; i < m ; ++i) if (Mask & (1 << i)) { if (dp[Mask - (1 << i)].fi == -1) continue; int val = sal[dp[Mask - (1 << i)].fi]; int cur = dp[Mask - (1 << i)].se; if (cur + tenge[i] == val) { dp[Mask].fi = dp[Mask - (1 << i)].fi + 1; dp[Mask].se = 0; } else if (cur + tenge[i] < val) { dp[Mask].fi = dp[Mask - (1 << i)].fi; dp[Mask].se = cur + tenge[i]; } if (dp[Mask].fi == n) { cout << "YES" << endl; return; } } cout << "NO" << endl; } int32_t main() { faster; // file("txt"); // int t ; cin >> t ; while (t--) 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...