Submission #893318

#TimeUsernameProblemLanguageResultExecution timeMemory
893318damwuanTopical (NOI23_topical)C++17
100 / 100
331 ms110760 KiB

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define for1(i,j,k) for(int i=j;i<=k;i++)
#define for2(i,j,k) for(int i=j;i>=k;i--)
#define for3(i,j,k,l) for(int i=j;i<=k;i+=l)
#define bit(n,i) ((n>>i)&1)
#define all(x) x.begin(),x.end()
#define int long long
#define double long double
typedef long long ll;
typedef pair<int,int> pii;
typedef double ld;
typedef pair<ld,ld> pdd;
typedef pair<ll,ll> pll;
const ll maxn=1e6+5;
const ll offset=2e5;
const ll blk=317;
const ll inf=1e9;
const int base =311;
const ll mod=998244353;
int n,k;
vector<vector<int>> u;
vector<pii> L[maxn];
int p[maxn],cnt[maxn];
void sol() {
    cin >> n>> k;
    u.resize(n+2,vector<int>(k+2,0));
    for1(i,1,n)
    {
        for1(j,1,k)
        {
            int x; cin >> x;
            L[j].pb({x,i});
        }
    }
    for1(i,1,n)
    {
        for1(j,1,k)
        {
            cin >> u[i][j];
        }
    }
    for1(j,1,k) sort(all(L[j]),greater<pii>());
    vector<int> qq;
    int res=0;
    while (true)
    {
        for1(j,1,k)
        {
            while (!L[j].empty() && p[j]>= L[j].back().fi)
            {
                cnt[L[j].back().se]++;
//            cerr<< cnt[L[j].back().se]<<' '<<L[j].back().se<<'\n';
                if (cnt[L[j].back().se] == k) qq.pb(L[j].back().se);
                L[j].pop_back();
            }
        }
//        cerr<< qq.size()<<'\n';
        if (qq.empty()) break;
        while (!qq.empty())
        {
            int i=qq.back();
            qq.pop_back();
            res++;
            for1(j,1,k) p[j]+=u[i][j];
        }
    }
    cout << res<<'\n';

}
int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
//    freopen("paleta.inp","r",stdin);
//    freopen("paleta.out","w",stdout);

    int t=1;//cin >> t;
    while (t--) {
        sol();
    }
}

/*
1
5 3
4 1 2 3 1
*/









#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...