Submission #1177310

#TimeUsernameProblemLanguageResultExecution timeMemory
1177310VMaksimoski008Topical (NOI23_topical)C++20
100 / 100
478 ms70708 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; signed main() { int n, m, ans = 0; cin >> n >> m; vector<pair<int, int> > mn[m+1]; int mat[n+1][m+1]; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { int x; cin >> x; mn[j].push_back({ x, i }); } } for(int j=1; j<=m; j++) sort(mn[j].rbegin(), mn[j].rend()); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) cin >> mat[i][j]; vector<int> deg(n+1); vector<ll> curr(m+1, 0); queue<int> q; for(int i=1; i<=m; i++) { while(!mn[i].empty() && mn[i].back().first <= curr[i]) { deg[mn[i].back().second]++; mn[i].pop_back(); } } for(int i=1; i<=n; i++) { if(deg[i] == m) { q.push(i); } } while(!q.empty()) { int u = q.front(); q.pop(); ans++; for(int i=1; i<=m; i++) curr[i] += mat[u][i]; for(int i=1; i<=m; i++) { while(!mn[i].empty() && mn[i].back().first <= curr[i]) { if(++deg[mn[i].back().second] == m) q.push(mn[i].back().second); mn[i].pop_back(); } } } 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...