제출 #893316

#제출 시각아이디문제언어결과실행 시간메모리
893316vjudge1Topical (NOI23_topical)C++17
100 / 100
448 ms149696 KiB
#include<bits/stdc++.h> #define TASKNAME "codeforce" #define pb push_back #define pli pair<int,int> #define fi first #define se second #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); using namespace std; using ll=long long; const ll maxn=1e6+10; const ll inf=1e18; const ll mod=1e9+7; ll n,k,s[maxn],id[maxn],cnt[maxn]; bool r[maxn]; vector<vector<pli>>c; vector<vector<ll>>u; void solve() { cin >> n >> k; c.resize(k+2,vector<pli>(n+2)); u.resize(k+2,vector<ll>(n+2)); for(int j=1;j<=n;j++) { for(int i=1;i<=k;i++) { cin >> c[i][j].fi; c[i][j].se=j; } } for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { cin >> u[j][i]; } } for(int i=1;i<=k;i++) sort(c[i].begin()+1,c[i].begin()+n+1); for(int i=1;i<=k;i++) s[i]=0,id[i]=1; priority_queue<pli>pq; for(int i=1;i<=n;i++) r[i]=false,cnt[i]=0,pq.push({cnt[i],i}); ll ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { while(id[j]<=n&&c[j][id[j]].fi<=s[j]) { cnt[c[j][id[j]].se]++; pq.push({cnt[c[j][id[j]].se],c[j][id[j]].se}); id[j]++; } } while(pq.size()>0&&r[pq.top().se]==true) pq.pop(); if(pq.size()==0||pq.top().fi<k) { break; } ll id=pq.top().se; pq.pop(); for(int j=1;j<=k;j++) { s[j]+=u[j][id]; } ans=i; } cout << ans; } int main() { fastio //freopen("c.INP","r",stdin); //freopen("c.OUT","w",stdout); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...