Submission #1199822

#TimeUsernameProblemLanguageResultExecution timeMemory
1199822ofozTopical (NOI23_topical)C++17
12 / 100
1091 ms15996 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool higher(const vector<int>& a, const vector<int>& b) {
    for (size_t i = 0; i < a.size(); ++i) {
        if (a[i] > b[i]) return true;
        if (b[i] > a[i]) return false;
    }
    return true;
}

void solve() {
    int n, k;
    cin >> n >> k;

    vector<int> cur(k, 0);
    vector<pair<vector<int>, int>> a;
    vector<vector<int>> b(n);

    // Read a
    for (int i = 0; i < n; ++i) {
        vector<int> temp(k);
        for (int j = 0; j < k; ++j) {
            cin >> temp[j];
        }
        a.push_back({temp, i});
    }

    // Read b
    for (int i = 0; i < n; ++i) {
        b[i].resize(k);
        for (int j = 0; j < k; ++j) {
            cin >> b[i][j];
        }
    }

    int res = 0;
    for (int _ = 0; _ < n; ++_) {
        vector<pair<vector<int>, int>> nxt;
        bool found = false;

        for (const auto& p : a) {
            const vector<int>& arr = p.first;
            int i = p.second;

            if (found) {
                nxt.push_back(p);
                continue;
            }

            if (higher(cur, arr)) {
                for (int j = 0; j < k; ++j) {
                    cur[j] += b[i][j];
                }
                found = true;
                ++res;
                continue;
            }

            nxt.push_back(p);
        }

        a = nxt;
    }

    cout << res << endl;
}

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