#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e6 + 5, mod = 1e9 + 7;
int n, k, ans, cur[N], sum[N];
vector<vector<int>> u, r, id;
ll p[N];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> k;
u.resize(n+1, vector<int> (k+1,0)), r.resize(n+1, vector<int> (k+1,0));
id.resize(k+1, vector<int> (n + 1));
for(int i=1;i<=n;++i) {
for(int j=1;j<=k;++j) cin >> r[i][j], id[j][i] = i;
}
for(int i=1;i<=n;++i) {
for(int j=1;j<=k;++j) cin >> u[i][j];
}
for(int i=1;i<=k;++i) {
sort(id[i].begin()+1,id[i].begin()+n+1, [&](int x, int y) {
return r[x][i] < r[y][i];
});
cur[i] = 1;
}
while(1) {
vector <int> luu;
for(int i=1;i<=k;++i) {
while(cur[i] <= n && p[i] >= r[id[i][cur[i]]][i]) {
sum[id[i][cur[i]]]++;
if(sum[id[i][cur[i]]] == k) luu.push_back(id[i][cur[i]]);
cur[i]++;
}
}
if(luu.empty()) break;
for(int idd : luu) {
for(int i=1;i<=k;++i) p[i] += u[idd][i];
ans++;
}
}
/*for(int i=1;i<=k;++i) {
cout << '\n';
for(int j=1;j<=n;++j) {
for(int t=1;t<=k;++t) cout << r[id[i][j]][t] << ' '; cout << '\n';
}
}*/
//for(int i=1;i<=k;++i) cout << cur[i] << ' '; cout << '\n';
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... |