#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |