#include <bits/stdc++.h>
using namespace std;
const int nx=1e6+5;
int n, k, skill[nx], cnt[nx], x, res;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> req[nx];
vector<int> u[nx];
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>k;
for (int i=1; i<=n; i++) for (int j=1; j<=k; j++) cin>>x, req[j].push({x, i});
u[0].resize(k+1);
for (int i=1; i<=n; i++)
{
u[i].resize(k+1);
for (int j=1; j<=k; j++) cin>>u[i][j];
}
queue<int> pass;
pass.push(0);
while (!pass.empty())
{
auto idx=pass.front();
pass.pop();
// cout<<"debug "<<idx<<'\n';
for (int i=1; i<=k; i++)
{
skill[i]+=u[idx][i];
while (!req[i].empty()&&skill[i]>=req[i].top().first)
{
auto subject_idx=req[i].top().second;
req[i].pop();
if (++cnt[subject_idx]==k) pass.push(subject_idx), res++;
// cout<<"sub "<<i<<' '<<subject_idx<<' '<<cnt[subject_idx]<<'\n';
}
}
}
cout<<res;
}
| # | 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... |