#include <bits/stdc++.h>
using namespace std;
long long liczbaSpotkan[500007];
long long poczatek[500007];
long long popSpotkanie[500007];
long long ileOsob[500007];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long k;
cin >> k;
long long licznik = 0;
for (long long i=1; i<=k; ++i) {
cin >> liczbaSpotkan[i];
poczatek[i] = licznik;
if (i > 1) {
for (long long j=0; j<liczbaSpotkan[i];++j) {
cin >> popSpotkanie[poczatek[i]+j];
}
}
licznik+=liczbaSpotkan[i];
}
long long maxPracownikow=0;
for (long long i=k; i>=1; --i) {
long long sumaDzis = 0;
for (long long j=0; j< liczbaSpotkan[i]; ++j) {
long long akt =poczatek[i]+j;
long long iluPracownikow = max((long long)1, ileOsob[akt]);
sumaDzis+=iluPracownikow;
if (i > 1) {
long long przod=popSpotkanie[akt];
if (przod>0) {
long long indeksRodzica = poczatek[i-1] + (przod-1);
ileOsob[indeksRodzica]+= iluPracownikow;
}
}
}
maxPracownikow = max(maxPracownikow, sumaDzis);
}
cout << maxPracownikow << endl;
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 50 51 52 53 54 55 | #include <bits/stdc++.h> using namespace std; long long liczbaSpotkan[500007]; long long poczatek[500007]; long long popSpotkanie[500007]; long long ileOsob[500007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long k; cin >> k; long long licznik = 0; for (long long i=1; i<=k; ++i) { cin >> liczbaSpotkan[i]; poczatek[i] = licznik; if (i > 1) { for (long long j=0; j<liczbaSpotkan[i];++j) { cin >> popSpotkanie[poczatek[i]+j]; } } licznik+=liczbaSpotkan[i]; } long long maxPracownikow=0; for (long long i=k; i>=1; --i) { long long sumaDzis = 0; for (long long j=0; j< liczbaSpotkan[i]; ++j) { long long akt =poczatek[i]+j; long long iluPracownikow = max((long long)1, ileOsob[akt]); sumaDzis+=iluPracownikow; if (i > 1) { long long przod=popSpotkanie[akt]; if (przod>0) { long long indeksRodzica = poczatek[i-1] + (przod-1); ileOsob[indeksRodzica]+= iluPracownikow; } } } maxPracownikow = max(maxPracownikow, sumaDzis); } cout << maxPracownikow << endl; return 0; } |
English