제출 #1316769

#제출 시각아이디문제언어결과실행 시간메모리
131676912345678Topical (NOI23_topical)C++17
100 / 100
425 ms99752 KiB
#include <bits/stdc++.h> using namespace std; const int nx=1e6+5; int n, k, skill[nx], cnt[nx], x, res; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> req[nx]; vector<int> u[nx]; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>k; for (int i=1; i<=n; i++) for (int j=1; j<=k; j++) cin>>x, req[j].push({x, i}); u[0].resize(k+1); for (int i=1; i<=n; i++) { u[i].resize(k+1); for (int j=1; j<=k; j++) cin>>u[i][j]; } queue<int> pass; pass.push(0); while (!pass.empty()) { auto idx=pass.front(); pass.pop(); // cout<<"debug "<<idx<<'\n'; for (int i=1; i<=k; i++) { skill[i]+=u[idx][i]; while (!req[i].empty()&&skill[i]>=req[i].top().first) { auto subject_idx=req[i].top().second; req[i].pop(); if (++cnt[subject_idx]==k) pass.push(subject_idx), res++; // cout<<"sub "<<i<<' '<<subject_idx<<' '<<cnt[subject_idx]<<'\n'; } } } cout<<res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...