Submission #1316769

#TimeUsernameProblemLanguageResultExecution timeMemory
131676912345678Topical (NOI23_topical)C++17
100 / 100
425 ms99752 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...