Submission #1199717

#TimeUsernameProblemLanguageResultExecution timeMemory
1199717ofozTopical (NOI23_topical)C++20
33 / 100
556 ms126548 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;

void nOne(int n, int k) {
    vector<vector<int>> grid(n, vector<int>(k));
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < k; ++j)
            cin >> grid[i][j];

    vector<int> ben(k);
    for (int i = 0; i < k; ++i)
        cin >> ben[i];

    sort(grid.begin(), grid.end());

    int sum_first_row = 0;
    for (int j = 0; j < k; ++j)
        sum_first_row += grid[0][j];

    if (sum_first_row == 0)
        cout << 1 << endl;
    else
        cout << 0 << endl;
}

void kOne(int n, int k) {
    vector<vector<int>> grid(n, vector<int>(k));
    vector<vector<int>> ben(n, vector<int>(k));

    for (int i = 0; i < n; ++i)
        for (int j = 0; j < k; ++j)
            cin >> grid[i][j];

    for (int i = 0; i < n; ++i)
        for (int j = 0; j < k; ++j)
            cin >> ben[i][j];

    vector<pair<int, int>> pairs;
    for (int i = 0; i < n; ++i)
        pairs.push_back({grid[i][0], ben[i][0]});

    sort(pairs.begin(), pairs.end());
    reverse(pairs.begin(), pairs.end());
    int cur = 0, res = 0;
    while (!pairs.empty() && cur >= pairs.back().first) {
        cur += pairs.back().second;
        pairs.pop_back();
        res++;
    }

    cout << res << endl;
}

void solve() {
    int n, k;
    cin >> n >> k;
    if (n == 1)
        nOne(n, k);
    else if (k == 1)
        kOne(n, k);
}

signed main() {
    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...