제출 #1318738

#제출 시각아이디문제언어결과실행 시간메모리
1318738ninstroyerTopical (NOI23_topical)C++20
100 / 100
518 ms166196 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const int nx = 1e6+5; ll n,k,res,cnt[nx],p[nx]; priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> req[nx]; queue<int> q; int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; vector<vector<int>> r(n+1,vector<int>(k+1)), u(n+1,vector<int>(k+1)); for(int i = 1; i <= n; i++) for(int j = 1; j <= k; j++) cin>>r[i][j]; for(int i = 1; i <= n; i++) for(int j = 1; j <= k; j++) cin>>u[i][j], req[j].push({r[i][j],i}); q.push(0); while(!q.empty()) { q.pop(); for(int i = 1; i <= k; i++) { while(!req[i].empty()) { auto [re, mod] = req[i].top(); if(re > p[i]) break; req[i].pop(); cnt[mod]++; if(cnt[mod]==k) q.push(mod),res++; } } if(q.empty()) break; while(!q.empty()) { int mod = q.front(); q.pop(); if(mod == 0) continue; for(int i = 1; i <= k; i++) p[i] += u[mod][i]; } q.push(0); } 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...