제출 #1319407

#제출 시각아이디문제언어결과실행 시간메모리
1319407nagorn_phTopical (NOI23_topical)C++20
49 / 100
347 ms94324 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define ordered_set <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> #define ordered_multiset <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update> #define int long long #define pvv pair <vector <int>, vector <int>> #define double long double #define pii pair <int, int> #define tiii tuple <int, int, int> #define tiiii tuple <int, int, int, int> #define emb emplace_back #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define iShowSpeed cin.tie(NULL)->sync_with_stdio(false) #define matrix vector <vector <int>> #define mat(n, m) vector <vector <int>> (n, vector <int> (m)); const int mod = 1e9 + 7; const int inf = 1e18; const matrix II = {{1, 0}, {0, 1}}; priority_queue <pii, vector <pii>, greater <pii>> q[1000005]; int32_t main(){ iShowSpeed; int n, k; cin >> n >> k; int u[n + 1][k + 1], r[n + 1][k + 1]; memset(u, 0, sizeof u); memset(r, 0, sizeof r); for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { cin >> u[i][j]; q[j].emplace(u[i][j], i); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { cin >> r[i][j]; } } vector <int> cnt(n + 1), p(n + 1); while (1) { bool fix = false; for (int i = 1; i <= k; i++) { while (!q[i].empty()) { if (p[i] >= q[i].top().first) { cnt[q[i].top().second]++; if (cnt[q[i].top().second] == k) { for (int j = 1; j <= k; j++) { p[j] += r[q[i].top().second][j]; } } q[i].pop(); fix = true; } else break; } } if (!fix) break; } cout << count(all(cnt), k); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...