Submission #1147762

#TimeUsernameProblemLanguageResultExecution timeMemory
1147762fatman87878Topical (NOI23_topical)C++20
100 / 100
316 ms91800 KiB
#include<bits/stdc++.h>
using namespace std;
#define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit);
#define lb(x) (x)&-(x)
#define all(x) (x).begin(),(x).end()
#define ll long long

constexpr int maxN=1e6+5;

int n,k,ptr[maxN],vals[maxN],deg[maxN],ans;

vector<pair<int,int>> adj[maxN];

queue<int> q;

int main(){
    IOS
    cin>>n>>k;
    vector val(n+1,vector(k,0ll));
    for(int i = 1;i<=n;i++)for(int j = 0;j<k;j++){
        int v;cin>>v;
        adj[j].emplace_back(v,i);
    }
    for(int i = 1;i<=n;i++)for(ll& j:val[i])cin>>j;
    for(int i = 0;i<k;i++)sort(all(adj[i]));
    q.emplace(0);
    for(int idx;!q.empty();){
        idx = q.front(),q.pop();
        ans++;
        for(int i = 0;i<k;i++){
            vals[i]+=val[idx][i];
            while(ptr[i]<adj[i].size()){
                auto [v,id] = adj[i][ptr[i]];
                if(v>vals[i])break;
                if(++deg[id]==k)q.emplace(id);
                ptr[i]++;
            }
        }
    }
    cout<<ans-1<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...