#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int k, n1;
cin >> k >> n1;
vector<vector<pair<int, int>>> meetings(k);
meetings[0].resize(n1);
for (int i = 1; i < k; ++i) {
int n;
cin >> n;
meetings[i].resize(n);
for (int j = 0; j < n; ++j) {
cin >> meetings[i][j].first;
}
}
auto prev = meetings.back();
meetings.pop_back();
long long res{};
while (size(meetings)) {
long long prevSum = 0;
auto curr = meetings.back();
meetings.pop_back();
for (auto p : prev) {
prevSum += p.second ? : 1;
if (p.first > 0) {
curr[p.first - 1].second += p.second ? : 1;
}
}
res = max(res, prevSum);
prev = std::move(curr);
}
long long firstSum{};
for (auto p : prev) {
firstSum += p.second ? : 1;
}
res = max(res, firstSum);
cout << res << "\n";
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> #include <vector> #include <unordered_map> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int k, n1; cin >> k >> n1; vector<vector<pair<int, int>>> meetings(k); meetings[0].resize(n1); for (int i = 1; i < k; ++i) { int n; cin >> n; meetings[i].resize(n); for (int j = 0; j < n; ++j) { cin >> meetings[i][j].first; } } auto prev = meetings.back(); meetings.pop_back(); long long res{}; while (size(meetings)) { long long prevSum = 0; auto curr = meetings.back(); meetings.pop_back(); for (auto p : prev) { prevSum += p.second ? : 1; if (p.first > 0) { curr[p.first - 1].second += p.second ? : 1; } } res = max(res, prevSum); prev = std::move(curr); } long long firstSum{}; for (auto p : prev) { firstSum += p.second ? : 1; } res = max(res, firstSum); cout << res << "\n"; } |
English