Submission #1280651

#TimeUsernameProblemLanguageResultExecution timeMemory
1280651ducksaysquackTopical (NOI23_topical)C++20
100 / 100
701 ms125620 KiB
#include <bits/stdc++.h>
#define int long long
#define f first
#define s second
using namespace std;
signed main() {
	int n, k; cin >> n >> k;
	vector<vector<pair<int,int>>> v(k,vector<pair<int,int>>(n)); vector<vector<int>> w(k,vector<int>(n));
	for(int i=0;i<n;i++) for(int j=0;j<k;j++) {cin >> v[j][i].f; v[j][i].s = i;} for(int i=0;i<n;i++) for(int j=0;j<k;j++) cin >> w[j][i];
	for(int i=0;i<k;i++) sort(begin(v[i]),end(v[i])); queue<int> q; vector<int> c(n), d(k), e(k); int ans = 0;
	while(true) {
		for(int i=0;i<k;i++) {while(e[i] < n && d[i] >= v[i][e[i]].f) {c[v[i][e[i]].s]++, e[i]++; if(c[v[i][e[i]-1].s] == k) q.push(v[i][e[i]-1].s);}}
		if(q.empty()) break;
		else while(!q.empty()) {for(int i=0;i<k;i++) d[i] += w[i][q.front()]; ans++; q.pop();}
		
	}
	cout << ans << '\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...