#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int k, n1;
cin >> k >> n1;
int res = 0;
vector <vector <int>> v1(k);
vector <vector <int>> v2(k);
v1[0].resize(n1, 0);
v2[0].resize(n1, 1);
for(int i=1; i<k; i++) {
int n;
cin >> n;
for(int j=0; j<n; j++) {
int a;
cin >> a;
v1[i].push_back(a);
v2[i].push_back(1);
}
}
for(int i=k-1; i>=0; i--) {
int s = v2[i].size();
int curr = 0;
// cout << "i = " << i << ", s = " << s << '\n';
for(int j=0; j<s; j++) {
int pre = v1[i][j];
int val = v2[i][j];
if(val > 1) {
val--;
}
curr += val;
if(pre > 0) {
v2[i-1][pre-1] += val;
}
// cout << "j = " << j << ", pre = " << pre << ", val = " << val << '\n';
}
if(curr > res) {
// cout << "updating res; prev res = " << res << "; new res = " << curr << '\n';
res = curr;
}
}
cout << res;
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 <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int k, n1; cin >> k >> n1; int res = 0; vector <vector <int>> v1(k); vector <vector <int>> v2(k); v1[0].resize(n1, 0); v2[0].resize(n1, 1); for(int i=1; i<k; i++) { int n; cin >> n; for(int j=0; j<n; j++) { int a; cin >> a; v1[i].push_back(a); v2[i].push_back(1); } } for(int i=k-1; i>=0; i--) { int s = v2[i].size(); int curr = 0; // cout << "i = " << i << ", s = " << s << '\n'; for(int j=0; j<s; j++) { int pre = v1[i][j]; int val = v2[i][j]; if(val > 1) { val--; } curr += val; if(pre > 0) { v2[i-1][pre-1] += val; } // cout << "j = " << j << ", pre = " << pre << ", val = " << val << '\n'; } if(curr > res) { // cout << "updating res; prev res = " << res << "; new res = " << curr << '\n'; res = curr; } } cout << res; return 0; } |
English