Submission #1169572

#TimeUsernameProblemLanguageResultExecution timeMemory
1169572adaawfTopical (NOI23_topical)C++20
100 / 100
333 ms103680 KiB
#include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; vector<pair<int, int>> g[1000005]; long long int f[1000005], dd[1000005], b[1000005], c[1000005]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector<vector<int>> a(n + 1, vector<int>(k + 1)); queue<int> q; for (int i = 1; i <= n; i++) { int flag = 0; for (int j = 1; j <= k; j++) { int x; cin >> x; g[j].push_back({x, i}); flag |= x; } if (flag == 0) { q.push(i); dd[i] = 1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { cin >> a[i][j]; } } for (int i = 1; i <= k; i++) sort(g[i].begin(), g[i].end()); int res = 0; while (!q.empty()) { int p = q.front(); q.pop(); res++; for (int i = 1; i <= k; i++) { f[i] += a[p][i]; while (b[i] < n && g[i][b[i]].first <= f[i]) { c[g[i][b[i]].second]++; if (c[g[i][b[i]].second] == k && dd[g[i][b[i]].second] == 0) { q.push(g[i][b[i]].second); dd[g[i][b[i]].second] = 1; } b[i]++; } } } cout << res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...