Submission #1326291

#TimeUsernameProblemLanguageResultExecution timeMemory
1326291BolatuluTopical (NOI23_topical)C++20
40 / 100
1099 ms82380 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define all(x) (x).begin(), (x).end() // #define int ll const int maxn = 1e6 + 7; int n, k, cnt[maxn], p[maxn]; ll c[maxn]; vector<pair<int, int>> v[maxn]; void solve() { cin >> n >> k; int r[n + 1][k + 1], u[n + 1][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]; } for (int i = 1; i <= k; i++) { for (int j = 1; j <= n; j++) v[i].emplace_back(r[j][i], j); sort(all(v[i])); } set<pair<int, int>> s; for (int i = 1; i <= n; i++) s.insert({0, i}); int ans = 0; while (!s.empty()) { for (int i = 1; i <= k; i++) { while (p[i] < n && v[i][p[i]].first <= c[i]) { int x = v[i][p[i]].second; s.erase({cnt[x], x}); cnt[x]++; s.insert({cnt[x], x}); p[i]++; } } if (s.rbegin()->first < k) break; ans++; int x = s.rbegin()->second; for (int i = 1; i <= k; i++) { c[i] += u[x][i]; } s.erase({cnt[x], x}); } cout << ans; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); int test = 1; // cin >> test; while (test--) { solve(); // cout << '\n'; } 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...