#include <bits/stdc++.h>
using namespace std;
#define isz(a) (int)(a).size()
int n, k;
vector <vector <int> > r, u;
vector <vector <int> > arr;
vector <int> ptr, p, cnt;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
r.assign(n, vector <int>(k));
u.assign(n, vector <int>(k));
arr.assign(k, {});
p.assign(k, 0);
ptr.assign(k, 0);
cnt.assign(n, 0);
for (int i = 0; i < n; i++)
for (int j = 0; j < k; j++){
cin >> r[i][j];
arr[j].push_back(i);
}
for (int i = 0; i < n; i++)
for (int j = 0; j < k; j++)
cin >> u[i][j];
for (int i = 0; i < k; i++){
sort(arr[i].begin(), arr[i].end(), [&](int x, int y){
return r[x][i] < r[y][i];
});
}
int ans = 0;
while (true){
vector <int> clist = {};
for (int i = 0; i < k; i++){
while (ptr[i] < n){
int t = arr[i][ptr[i]];
if (p[i] >= r[t][i]){
cnt[t]++;
if (cnt[t] == k) clist.push_back(t);
}
else break;
ptr[i]++;
}
}
if (clist.empty()) break;
ans += isz(clist);
for (int t : clist){
for (int i = 0; i < k; i++) p[i] += u[t][i];
}
}
cout << ans;
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... |