#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int N, K, ans;
queue <int> Q;
int main () {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N >> K;
pii R[K][N];
int U[N+1][K];
ll skill[K];
int point[K], done[N];
memset(skill,0,sizeof(skill));
memset(point,0,sizeof(point));
memset(done,0,sizeof(done));
for (int i=0;i<N;i++) {
for (int j=0;j<K;j++) {
cin >> R[j][i].fi;
R[j][i].se = 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(R[i],R[i]+N);
U[N][i] = 0;
}
queue <int> Q;
Q.push(N);
while (!Q.empty()) {
int x = Q.front();
Q.pop();
for (int i=0;i<K;i++) {
skill[i] += U[x][i];
while (point[i] < N && R[i][point[i]].fi <= skill[i]) {
done[R[i][point[i]].se]++;
if (done[R[i][point[i]].se] == K) {
Q.push(R[i][point[i]].se);
ans++;
}
point[i]++;
}
}
}
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... |