#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void wypisz(vector<vector<int>>& v) {
for(auto& vv : v) {
for(int n : vv)
cout << n << " ";
cout << "\n";
}
cout << "\n";
}
int main() {
int k, n0;
cin >> k >> n0;
vector<vector<int>> vdrzewo(k), vliczbawymag(k);
vdrzewo[0].resize(n0); vliczbawymag[0].resize(n0);
for(int i = 1; i < k; i++) {
int n;
cin >> n;
vdrzewo[i].reserve(n);
vliczbawymag[i].resize(n);
for(int j = 0; j < n; j++) {
int a;
cin >> a;
vdrzewo[i].push_back(a);
}
}
//wypisz(vdrzewo);
//wypisz(vliczbawymag);
for(int i = k-1; i >= 0; i--) {
for(int j = 0; j < vdrzewo[i].size(); j++) {
vliczbawymag[i][j] = max(vliczbawymag[i][j], 1);
if(i > 0 && vdrzewo[i][j] >= 1)
vliczbawymag[i-1][vdrzewo[i][j]-1] += vliczbawymag[i][j];
}
}
//wypisz(vdrzewo);
//wypisz(vliczbawymag);
int max_wynik = 0;
for(auto& warstwa : vliczbawymag) {
int suma = 0;
for(int n : warstwa)
suma += n;
max_wynik = max(max_wynik, suma);
}
cout << max_wynik << "\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 54 55 56 57 | #include <iostream> #include <vector> #include <algorithm> using namespace std; void wypisz(vector<vector<int>>& v) { for(auto& vv : v) { for(int n : vv) cout << n << " "; cout << "\n"; } cout << "\n"; } int main() { int k, n0; cin >> k >> n0; vector<vector<int>> vdrzewo(k), vliczbawymag(k); vdrzewo[0].resize(n0); vliczbawymag[0].resize(n0); for(int i = 1; i < k; i++) { int n; cin >> n; vdrzewo[i].reserve(n); vliczbawymag[i].resize(n); for(int j = 0; j < n; j++) { int a; cin >> a; vdrzewo[i].push_back(a); } } //wypisz(vdrzewo); //wypisz(vliczbawymag); for(int i = k-1; i >= 0; i--) { for(int j = 0; j < vdrzewo[i].size(); j++) { vliczbawymag[i][j] = max(vliczbawymag[i][j], 1); if(i > 0 && vdrzewo[i][j] >= 1) vliczbawymag[i-1][vdrzewo[i][j]-1] += vliczbawymag[i][j]; } } //wypisz(vdrzewo); //wypisz(vliczbawymag); int max_wynik = 0; for(auto& warstwa : vliczbawymag) { int suma = 0; for(int n : warstwa) suma += n; max_wynik = max(max_wynik, suma); } cout << max_wynik << "\n"; } |
English