제출 #912892

#제출 시각아이디문제언어결과실행 시간메모리
912892vjudge1Topical (NOI23_topical)C++17
100 / 100
789 ms83296 KiB
/****************************************************************************** Online C++ Compiler. Code, Compile, Run and Debug C++ program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include <bits/stdc++.h> #define ll long long #define pll pair<ll,ll> #define ff first #define ss second #define pb push_back using namespace std; int main() { int n,k; cin>>n>>k; vector<pair<int,int>> arr[k]; for(int i = 0;i<n;i++){ for(int j =0 ;j<k;j++){ int x; cin>>x; arr[j].pb({x,i}); } } vector<vector<int>> u(n+1,vector<int>(k)); 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++)u[n][i]=0; vector<int> currK(k,0); queue<int> q; q.push(n); vector<int> cntTop(n+1,0); int cnt = -1; for(int i = 0;i<k;i++)sort(arr[i].begin(),arr[i].end(),greater<pair<int,int>>()); while(!q.empty()){ int curr = q.front(); q.pop(); cnt++; for(int i =0;i<k;i++){ currK[i]+=u[curr][i]; while(!arr[i].empty()&&currK[i]>=arr[i].back().ff){ cntTop[arr[i].back().ss]++; if(cntTop[arr[i].back().ss]==k)q.push(arr[i].back().ss); arr[i].pop_back(); } } } cout<<cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...