제출 #1223956

#제출 시각아이디문제언어결과실행 시간메모리
1223956omardoescode은행 (IZhO14_bank)C++20
46 / 100
92 ms8520 KiB
/** * بسم الله الرحمن الرحيم * Solved by: Omar Mohammad * Contact Me: https://www.linkedin.com/in/omardoescode/ * My Github: https://github.com/omardoescode/ * * Problem: $(PROBLEM) * Contest: $(CONTEST) * Judge: $(JUDGE) * URL: $(URL) * Memory Limit: $(MEMLIM) * Time Limit: $(TIMELIM) * Start: $(DATE) */ #include "bits/stdc++.h" #include <algorithm> #include <climits> using namespace std; #define ll long long #define str string #define ooi (INT_MAX / 2) #define ooll (LONG_LONG_MAX / 2) #define ull unsigned ll #define pdi pair<double, int> #define pii pair<int, int> #define pdd pair<double, double> #define in(a) \ int a; \ cin >> a; #define in2(a, b) \ int a, b; \ cin >> a >> b; #define in3(a, b, c) \ int a, b, c; \ cin >> a >> b >> c; #define cin(a) \ for (auto &v : a) \ cin >> v #define cout(a) \ for (auto &v : a) \ cout << v << " "; \ cout << endl #define vec vector #define vvi vector<vector<int>> #define vvl vector<vector<long long>> #define vi vector<int> #define vll vector<ll> #define all(v) begin(v), end(v) signed main() { cin.tie(0)->sync_with_stdio(0); in2(num_people, num_notes); int salaries[num_people]; for (auto &x : salaries) cin >> x; int notes[num_notes]; for (auto &x : notes) cin >> x; pair<int, int> dp[1 << num_notes]; // (leftover, last_person) memset(dp, -1, sizeof(dp)); dp[0] = {0, 0}; for (int mask = 0; mask < (1 << num_notes); mask++) { for (int note = 0; note < num_notes; note++) { if (!(mask & (1 << note))) continue; int without = mask ^ (1 << note); auto [prev_leftover, prev_last_person] = dp[without]; int new_amt = prev_leftover + notes[note]; int curr_target = salaries[prev_last_person]; // Still not enough if (new_amt < curr_target) { dp[mask] = {new_amt, prev_last_person}; } // If exactly enough else if (new_amt == curr_target) { dp[mask] = {0, prev_last_person + 1}; } } // If we covered all people if (dp[mask].second == num_people) { cout << "YES" << endl; return 0; } } cout << "NO" << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...