#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false), cin.tie(nullptr);
int K;
cin >> K;
vector<vector<int> > meetings(K);
for(int i = 0; i < K; i++){
int N;
cin >> N;
meetings[i].resize(N, -1);
if(i > 0){
for(int& x : meetings[i]){
cin >> x; x--;
}
}
}
vector<vector<int> > has_children(K);
vector<vector<int> > start_day(K);
for(int day = 0; day < K; day++){
has_children[day].resize(meetings[day].size(), 0);
start_day[day].resize(meetings[day].size());
for(int i = 0; i < (int)meetings[day].size(); i++){
if(meetings[day][i] >= 0){
has_children[day-1][meetings[day][i]] = 1;
start_day[day][i] = start_day[day-1][meetings[day][i]];
} else {
start_day[day][i] = day;
}
}
}
vector<pair<int,int>> intervals;
for(int day = 0; day < K; day++){
for(int i = 0; i < (int)meetings[day].size(); i++){
if(!has_children[day][i]){
intervals.push_back({start_day[day][i], day});
}
}
}
vector<int> deltas(K+1);
for(auto [x, y] : intervals){
deltas[x]++;
deltas[y+1]--;
}
int ans = 0;
int cur = 0;
for(int x : deltas){
cur += x;
ans = max(ans, cur);
}
cout << ans << '\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 46 47 48 49 50 51 52 53 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false), cin.tie(nullptr); int K; cin >> K; vector<vector<int> > meetings(K); for(int i = 0; i < K; i++){ int N; cin >> N; meetings[i].resize(N, -1); if(i > 0){ for(int& x : meetings[i]){ cin >> x; x--; } } } vector<vector<int> > has_children(K); vector<vector<int> > start_day(K); for(int day = 0; day < K; day++){ has_children[day].resize(meetings[day].size(), 0); start_day[day].resize(meetings[day].size()); for(int i = 0; i < (int)meetings[day].size(); i++){ if(meetings[day][i] >= 0){ has_children[day-1][meetings[day][i]] = 1; start_day[day][i] = start_day[day-1][meetings[day][i]]; } else { start_day[day][i] = day; } } } vector<pair<int,int>> intervals; for(int day = 0; day < K; day++){ for(int i = 0; i < (int)meetings[day].size(); i++){ if(!has_children[day][i]){ intervals.push_back({start_day[day][i], day}); } } } vector<int> deltas(K+1); for(auto [x, y] : intervals){ deltas[x]++; deltas[y+1]--; } int ans = 0; int cur = 0; for(int x : deltas){ cur += x; ans = max(ans, cur); } cout << ans << '\n'; } |
English