Submission #1323993

#TimeUsernameProblemLanguageResultExecution timeMemory
1323993sh_qaxxorov_571Bank (IZhO14_bank)C++20
44 / 100
1092 ms332 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int N, M;
vector<int> salary;
vector<int> bills;
bool found = false;

// Backtracking funksiyasi
void solve(int person_idx) {
    if (found) return;
    
    // Agar barcha odamlarga maosh berib bo'lingan bo'lsa
    if (person_idx == N) {
        found = true;
        return;
    }

    // Joriy odam uchun banknotlar kombinatsiyasini qidirish
    // Bu qismda Subset Sum algoritmi yoki ichki backtracking ishlatiladi
}

/* Soddaroq yondashuv: Har bir banknotni biror odamga berishga urinib ko'rish.
   Har bir banknot ixtiyoriy bitta odamga tegishli bo'lishi yoki umuman ishlatilmasligi mumkin.
*/

bool can_pay(int bill_idx, vector<int>& current_salaries) {
    if (bill_idx == M) {
        for (int s : current_salaries) {
            if (s != 0) return false;
        }
        return true;
    }

    for (int i = 0; i < N; i++) {
        if (current_salaries[i] >= bills[bill_idx]) {
            current_salaries[i] -= bills[bill_idx];
            if (can_pay(bill_idx + 1, current_salaries)) return true;
            current_salaries[i] += bills[bill_idx]; // Backtrack
        }
    }
    
    // Banknotni ishlatmaslik holati
    if (can_pay(bill_idx + 1, current_salaries)) return true;

    return false;
}

int main() {
    cin >> N >> M;
    salary.resize(N);
    for (int i = 0; i < N; i++) cin >> salary[i];
    bills.resize(M);
    for (int i = 0; i < M; i++) cin >> bills[i];

    // Kattaroq banknotlarni oldinroq tekshirish samaraliroq
    sort(bills.rbegin(), bills.rend());

    if (can_pay(0, salary)) cout << "YES" << endl;
    else cout << "NO" << endl;

    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...