#include <iostream>
using namespace std;
typedef long long ll;
const size_t M = 500'011;
ll n[M];
ll a[M];
ll m[M];
ll z[M];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll k;
cin >> k >> n[1];
for (ll i=2; i<=k; i++) {
cin >> n[i];
bool p[M] = {};
for (ll j=1; j<=n[i]; j++) {
cin >> a[j];
if (a[j]==0) {
m[i-1]--;
}else{
if (!p[a[j]]) {
p[a[j]] = true;
}
}
}
for (ll j=1; j<=n[i-1]; j++) {
if (p[j]==false) {
z[i-1]++;
}
}
}
ll t = n[k];
ll max = t;
for (ll i=k-1; i>0; i--) {
//cout << m[i] << " " << z[i] << "\n";
t = t + m[i] + z[i];
if (t>max)
max = t;
}
cout << max << "\n";
return 0;
}
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 | #include <iostream> using namespace std; typedef long long ll; const size_t M = 500'011; ll n[M]; ll a[M]; ll m[M]; ll z[M]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll k; cin >> k >> n[1]; for (ll i=2; i<=k; i++) { cin >> n[i]; bool p[M] = {}; for (ll j=1; j<=n[i]; j++) { cin >> a[j]; if (a[j]==0) { m[i-1]--; }else{ if (!p[a[j]]) { p[a[j]] = true; } } } for (ll j=1; j<=n[i-1]; j++) { if (p[j]==false) { z[i-1]++; } } } ll t = n[k]; ll max = t; for (ll i=k-1; i>0; i--) { //cout << m[i] << " " << z[i] << "\n"; t = t + m[i] + z[i]; if (t>max) max = t; } cout << max << "\n"; return 0; } |
English