#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<pair<int, int>> g[1000005];
long long int f[1000005], dd[1000005], b[1000005], c[1000005];
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, k;
cin >> n >> k;
vector<vector<int>> a(n + 1, vector<int>(k + 1));
queue<int> q;
for (int i = 1; i <= n; i++) {
int flag = 0;
for (int j = 1; j <= k; j++) {
int x;
cin >> x;
g[j].push_back({x, i});
flag |= x;
}
if (flag == 0) {
q.push(i);
dd[i] = 1;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= k; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= k; i++) sort(g[i].begin(), g[i].end());
int res = 0;
while (!q.empty()) {
int p = q.front();
q.pop();
res++;
for (int i = 1; i <= k; i++) {
f[i] += a[p][i];
while (b[i] < n && g[i][b[i]].first <= f[i]) {
c[g[i][b[i]].second]++;
if (c[g[i][b[i]].second] == k && dd[g[i][b[i]].second] == 0) {
q.push(g[i][b[i]].second);
dd[g[i][b[i]].second] = 1;
}
b[i]++;
}
}
}
cout << res;
}
# | 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... |