#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
using ll = long long;
#define int ll
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n,k; cin >> n >> k;
vector<vector<int>> r(n,vector<int>(k));
vector<vector<int>> u(n,vector<int>(k));
for(int i = 0; i < n; i++) for(int j = 0; j < k; j++) cin >> r[i][j];
for(int i = 0; i < n; i++) for(int j = 0; j < k; j++) cin >> u[i][j];
vector<int> rem(n,k);
vector<int> p(k,0);
vector<priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>> pq(k);
for(int i = 0; i < n; i++) {
for(int j = 0; j < k; j++) {
pq[j].push({r[i][j],i});
}
}
int ans = 0;
bool cont = true;
while(cont) {
cont = false;
for(int i = 0; i < k; i++) {
while(!pq[i].empty()&&pq[i].top().first<=p[i]) {
rem[pq[i].top().second]--;
// cout << "decresed " << pq[i].top().second << " rem = " << rem[pq[i].top().second] << "\n";
if(rem[pq[i].top().second]==0) {
cont = true;
ans++;
for(int j = 0; j < k; j++) p[j] += u[pq[i].top().second][j];
}
pq[i].pop();
}
}
}
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... |