제출 #888461

#제출 시각아이디문제언어결과실행 시간메모리
888461vjudge1Topical (NOI23_topical)C++17
100 / 100
350 ms164792 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<vector<int>> a, b; vector<pair<int, int>> g[1000005]; long long int c[1000005], d[1000005], f[1000005]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; a = vector<vector<int>> (n + 1, vector<int>(k + 1, 0)); b = vector<vector<int>> (n + 1, vector<int>(k + 1, 0)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { cin >> a[i][j]; g[j].push_back({a[i][j], i}); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { cin >> b[i][j]; } } for (int i = 1; i <= k; i++) { sort(g[i].begin(), g[i].end()); } int res = 0; while (1) { int flag = 0; for (int i = 1; i <= k; i++) { while (c[i] < n && f[i] >= g[i][c[i]].first) { int h = g[i][c[i]].second; d[h]++; if (d[h] == k) { for (int j = 1; j <= k; j++) { f[j] += b[h][j]; } flag = 1; res++; } c[i]++; } } if (flag == 0) break; } 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...