Submission #1164255

#TimeUsernameProblemLanguageResultExecution timeMemory
1164255ChottuFTopical (NOI23_topical)C++20
100 / 100
730 ms297908 KiB
#include<bits/stdc++.h>
using namespace std;

const long long MAXV = 1e7;

long long all[MAXV],hshed[MAXV];

long long used[MAXV];
long long cur[MAXV];

vector<pair<long long,long long>> arr[MAXV];
long long ind[MAXV];

int main(){
    long long n,k;
    cin >> n >> k;
    for(long long i = 0; i<n; i++){
        for(long long j = 0; j<k; j++){
            cin >> all[i*k+j];
            arr[j].push_back({all[i*k+j],i});
        }
    }
    for(long long j = 0; j<k; j++){
        sort(arr[j].begin(),arr[j].end());
    }
    for(long long i = 0; i<n; i++){
        for (long long j = 0; j<k; j++){
            cin >> hshed[i*k+j];
        }
    }
    long long ans = 0;
    vector<long long> nex;
    bool flag = 1;
    while(flag){
        flag = 0;
        for(long long j = 0; j<k; j++){
            while(ind[j] < n && arr[j][ind[j]].first <= cur[j]){
                used[arr[j][ind[j]].second]++;
                if(used[arr[j][ind[j]].second] == k){
                    for(long long jj = 0; jj < k; jj++){
                        cur[jj] += hshed[arr[j][ind[j]].second*k+jj];
                    }
                    ans++;
                    flag = 1;
                }
                ind[j]++;
            }
        }
    }
    cout << ans;
    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...