#include <bits/stdc++.h>
#define int long long
#define f first
#define s second
using namespace std;
signed main() {
int n, k; cin >> n >> k;
vector<vector<pair<int,int>>> v(k,vector<pair<int,int>>(n)); vector<vector<int>> w(k,vector<int>(n));
for(int i=0;i<n;i++) for(int j=0;j<k;j++) {cin >> v[j][i].f; v[j][i].s = i;} for(int i=0;i<n;i++) for(int j=0;j<k;j++) cin >> w[j][i];
for(int i=0;i<k;i++) sort(begin(v[i]),end(v[i])); queue<int> q; vector<int> c(n), d(k), e(k); int ans = 0;
while(true) {
for(int i=0;i<k;i++) {while(e[i] < n && d[i] >= v[i][e[i]].f) {c[v[i][e[i]].s]++, e[i]++; if(c[v[i][e[i]-1].s] == k) q.push(v[i][e[i]-1].s);}}
if(q.empty()) break;
else while(!q.empty()) {for(int i=0;i<k;i++) d[i] += w[i][q.front()]; ans++; q.pop();}
}
cout << ans << '\n';
}
# | 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... |