Submission #1316478

#TimeUsernameProblemLanguageResultExecution timeMemory
1316478exoworldgdTopical (NOI23_topical)C++20
100 / 100
386 ms78540 KiB
#include<bits/stdc++.h>
#define int long long
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
using namespace std;
int n,m,c[1000005],val[1000005],ans;
priority_queue<array<int,2>,vector<array<int,2>>,greater<>>pq[1000005];
queue<int>q;
signed main(void){
	exoworldgd;
	cin>>n>>m;
	int a[n][m],b[n][m];
	for(auto&i:a)for(auto&j:i)cin>>j;
	for(auto&i:b)for(auto&j:i)cin>>j;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++)a[i][j]?pq[j].push({a[i][j],i}),0:c[i]++;
		if(c[i]==m)q.push(i);
	}
	while(q.size()){
		int u=q.front();q.pop(),ans++;
		for(int i=0,v;i<m;i++){
			val[i]+=b[u][i];
			while(pq[i].size()&&pq[i].top()[0]<=val[i]){
				v=pq[i].top()[1],pq[i].pop(),c[v]++;
				if(c[v]==m)q.push(v);
			}
		}
	}
	cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...