Submission #1123264

#TimeUsernameProblemLanguageResultExecution timeMemory
1123264AvianshTopical (NOI23_topical)C++17
100 / 100
278 ms35660 KiB
#include <bits/stdc++.h>

using namespace std;

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,k;
    cin >> n >> k;
    int r[n][k];
    int u[n][k];
    pair<long long,int>sortedreqs[k][n];
    for(int i = 0;i<n;i++){
        for(int j = 0;j<k;j++){
            cin >> r[i][j];
            sortedreqs[j][i]={r[i][j],i};
        }
    }
    for(int i = 0;i<n;i++){
        for(int j = 0;j<k;j++){
            cin >> u[i][j];
        }
    }
    for(int i = 0;i<k;i++){
        sort(sortedreqs[i],sortedreqs[i]+n);
    }
    long long cur[k];
    int val[n];
    fill(val,val+n,0);
    fill(cur,cur+k,0);
    int cn = 0;
    int inds[k];
    fill(inds,inds+k,0);
    while(1){
        int curcn = 0;
        for(int i = 0;i<k;i++){
            bool fn=0;
            while(inds[i]<n&&cur[i]>=sortedreqs[i][inds[i]].first){
                val[sortedreqs[i][inds[i]].second]++;
                assert(val[sortedreqs[i][inds[i]].second]<=k);
                if(val[sortedreqs[i][inds[i]].second]==k){
                    fn=1;
                    int c = sortedreqs[i][inds[i]].second;
                    for(int i = 0;i<k;i++){
                        cur[i]+=u[c][i];
                    }
                    inds[i]++;
                    break;
                }
                inds[i]++;
            }
            if(fn){
                curcn++;
                break;
            }
        }
        if(curcn){
            cn+=curcn;
        }
        else{
            break;
        }
    }
    cout << cn;
    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...