제출 #1169603

#제출 시각아이디문제언어결과실행 시간메모리
1169603trashaccountTopical (NOI23_topical)C++20
100 / 100
552 ms121072 KiB
#include <bits/stdc++.h> using namespace std; #define isz(a) (int)(a).size() int n, k; vector <vector <int> > r, u; vector <vector <int> > arr; vector <int> ptr, p, cnt; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; r.assign(n, vector <int>(k)); u.assign(n, vector <int>(k)); arr.assign(k, {}); p.assign(k, 0); ptr.assign(k, 0); cnt.assign(n, 0); for (int i = 0; i < n; i++) for (int j = 0; j < k; j++){ cin >> r[i][j]; arr[j].push_back(i); } 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++){ sort(arr[i].begin(), arr[i].end(), [&](int x, int y){ return r[x][i] < r[y][i]; }); } int ans = 0; while (true){ vector <int> clist = {}; for (int i = 0; i < k; i++){ while (ptr[i] < n){ int t = arr[i][ptr[i]]; if (p[i] >= r[t][i]){ cnt[t]++; if (cnt[t] == k) clist.push_back(t); } else break; ptr[i]++; } } if (clist.empty()) break; ans += isz(clist); for (int t : clist){ for (int i = 0; i < k; i++) p[i] += u[t][i]; } } 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...