Submission #1184823

#TimeUsernameProblemLanguageResultExecution timeMemory
1184823SalihSahinTopical (NOI23_topical)C++20
100 / 100
358 ms136476 KiB
#include "bits/stdc++.h" #define int long long #define pb push_back using namespace std; const int inf = 1e9; const int N = 2e5 + 20; int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); int n, m; cin>>n>>m; vector<vector<int> > r(n, vector<int>(m)), u(n, vector<int>(m)); vector<int> cnt(n), p(m); for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin>>r[i][j]; } } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin>>u[i][j]; } } vector<pair<int, int> > col[m]; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ col[j].pb({r[i][j], i}); } } for(int i = 0; i < m; i++){ sort(col[i].begin(), col[i].end()); } vector<int> ind(m); queue<int> add; for(int i = 0; i < m; i++){ while(ind[i] < n && col[i][ind[i]].first <= p[i]){ cnt[col[i][ind[i]].second]++; if(cnt[col[i][ind[i]].second] == m) add.push(col[i][ind[i]].second); ind[i]++; } } int ans = 0; while(!add.empty()){ int x = add.front(); add.pop(); ans++; for(int i = 0; i < m; i++){ p[i] += u[x][i]; while(ind[i] < n && col[i][ind[i]].first <= p[i]){ cnt[col[i][ind[i]].second]++; if(cnt[col[i][ind[i]].second] == m) add.push(col[i][ind[i]].second); ind[i]++; } } } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...