Submission #1339273

#TimeUsernameProblemLanguageResultExecution timeMemory
1339273nathlol2Topical (NOI23_topical)C++20
100 / 100
398 ms86536 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, ans;

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> m;
    vector<pair<int, int>> r[m + 1];
    int u[n + 1][m + 1], p[m + 1], ptr[m + 1], cnt[n + 1];
    memset(u, 0, sizeof u); memset(p, 0, sizeof p); memset(cnt, 0, sizeof cnt); memset(ptr, 0, sizeof ptr);
    for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++){
        int x; cin >> x;
        r[j].push_back({x, i});
    }
    for(int i = 1;i<=m;i++) sort(r[i].begin(), r[i].end());
    for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++) cin >> u[i][j];
    queue<int> done;
    done.push(0);
    while(!done.empty()){
        int id = done.front();
        done.pop();
        for(int i = 1;i<=m;i++){
            p[i] += u[id][i];
            while(ptr[i] < n && p[i] >= r[i][ptr[i]].first){
                if(++cnt[r[i][ptr[i]].second] == m) done.push(r[i][ptr[i]].second), ++ans;
                ptr[i]++;
            }
        }
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...