Submission #1329187

#TimeUsernameProblemLanguageResultExecution timeMemory
1329187khoileTopical (NOI23_topical)C++20
100 / 100
292 ms86544 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
const ll M=1e9+7;
ll n,k,x;
ll p[1000006],cnt[1000006],d[1000006];
vector<pair<ll,ll>> e[1000006];
int main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>k;
    ll u[n+1][k+1];
    for (ll i=1;i<=n;i++) {
        for (ll j=1;j<=k;j++) {
            cin>>x;
            e[j].push_back({x,i});
        }
    }
    for (ll i=1;i<=n;i++) {
        for (ll j=1;j<=k;j++) {
            cin>>u[i][j];
        }
    }
    for (ll i=1;i<=k;i++) {
        sort(e[i].begin(),e[i].end());
    }
    for (ll i=1;i<=k;i++) {
        p[i]=-1;
    }
    ll res=0;
    while(true) {
        vector<ll> a;
        for (ll i=1;i<=k;i++) {
            while(p[i]<n-1 && d[i]>=e[i][p[i]+1].fi) {
                p[i]++;
                cnt[e[i][p[i]].se]++;
                if (cnt[e[i][p[i]].se]==k) a.push_back(e[i][p[i]].se);
            }
        }
        for (ll i=0;i<a.size();i++) {
            for (ll j=1;j<=k;j++) {
                d[j]+=u[a[i]][j];
            }
        }
        res+=a.size();
        if (a.size()==0) break;
    }
    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...