Submission #1176386

#TimeUsernameProblemLanguageResultExecution timeMemory
1176386PekibanTopical (NOI23_topical)C++20
100 / 100
398 ms102136 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, k;
    cin >> n >> k;
    ll 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];
    }
    ll c[k+1];
    fill(c+1, c+k+1, 0);
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq[k+1];
    for (int i = 1; i <= n; ++i)    pq[k].push({r[i][k], i});
    int ans = 0;
    while (1) {
        for (int i = k; i >= 1; --i) {
            while (!pq[i].empty() && pq[i].top().first <= c[i]) {
                int j = pq[i].top().second; 
                pq[i].pop();
                pq[i-1].push({r[j][i-1], j});
            }
        }
        if (pq[0].empty()) break;
        while (!pq[0].empty()) {
            int j = pq[0].top().second; 
            pq[0].pop();
            for (int i = 1; i <= k; ++i)    c[i] += u[j][i];
            ans++;
        }
    }
    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...