#include <stdio.h>
#include <map>
#include <vector>
using namespace std;
void print_m(map <int,int> m) {
for(auto e: m)
fprintf(stderr, "[%d]: %d, ", e.first, e.second);
fprintf(stderr, "\n");
}
void print_vv(vector<vector<int>> v){
for(auto &r: v){
for(auto &e: r){
fprintf(stderr, "%d ", e);
}
fprintf(stderr, "\n");
}
}
int main() {
int k, n;
scanf("%d %d", &k, &n);
vector<vector<int>> s(k);
s[0] = vector<int>(n, 0);
int m;
for(int i = 1; i < k; i++){
scanf("%d", &m);
s[i] = vector<int>(m, 0);
for(int j = 0; j < m; j++){
scanf("%d", &s[i][j]);
}
}
// print_vv(s);
int ucz = 0;
map<int,int> prev;
map<int,int> next;
for(int i = k-1; i >=0; i--){
int ucz_local = 0;
for(int j = 0; j < s[i].size(); j++){
if(prev[j+1] > 0){
if(s[i][j] != 0)
next[s[i][j]] += prev[j+1];
ucz_local += prev[j+1];
}
else{
if(s[i][j] != 0)
next[s[i][j]]++;
ucz_local++;
}
}
if(ucz_local > ucz)
ucz = ucz_local;
prev = move(next);
// print_m(prev);
}
printf("%d\n", ucz);
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 56 57 58 59 | #include <stdio.h> #include <map> #include <vector> using namespace std; void print_m(map <int,int> m) { for(auto e: m) fprintf(stderr, "[%d]: %d, ", e.first, e.second); fprintf(stderr, "\n"); } void print_vv(vector<vector<int>> v){ for(auto &r: v){ for(auto &e: r){ fprintf(stderr, "%d ", e); } fprintf(stderr, "\n"); } } int main() { int k, n; scanf("%d %d", &k, &n); vector<vector<int>> s(k); s[0] = vector<int>(n, 0); int m; for(int i = 1; i < k; i++){ scanf("%d", &m); s[i] = vector<int>(m, 0); for(int j = 0; j < m; j++){ scanf("%d", &s[i][j]); } } // print_vv(s); int ucz = 0; map<int,int> prev; map<int,int> next; for(int i = k-1; i >=0; i--){ int ucz_local = 0; for(int j = 0; j < s[i].size(); j++){ if(prev[j+1] > 0){ if(s[i][j] != 0) next[s[i][j]] += prev[j+1]; ucz_local += prev[j+1]; } else{ if(s[i][j] != 0) next[s[i][j]]++; ucz_local++; } } if(ucz_local > ucz) ucz = ucz_local; prev = move(next); // print_m(prev); } printf("%d\n", ucz); return 0; } |
English