Submission #1285143

#TimeUsernameProblemLanguageResultExecution timeMemory
1285143duyanhchupapiTopical (NOI23_topical)C++20
40 / 100
1102 ms145212 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 1e6 + 5, mod = 1e9 + 7; int n, k, ans; vector<vector<int>> u,r; ll p[N]; struct cmp { bool operator()(int x, int y) const { if(r[x][1] != r[y][1]) return r[x][1] < r[y][1]; return x < y; } }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; u.resize(n+1, vector<int> (k+1)), r.resize(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]; } set <int, cmp> s; for(int i=1;i<=n;++i) s.insert(i); while(!s.empty()) { int del = 0; for(int id : s) { if(p[1] < r[id][1]) break; bool ok = 1; for(int i=1;i<=k;++i) if(r[id][i] > p[i]) { ok = 0; break; } if(!ok) continue; for(int i=1;i<=k;++i) p[i] += u[id][i]; ans++; del = id; break; } if(del == 0) break; s.erase(del); } cout << ans; 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...