#include <cstdio>
#include <vector>
constexpr int epoka_pa(int dzien, int godzina, int minuta) {
int poprawka = 0;
if (29 < dzien || (dzien == 29 && 3 <= godzina)) {
poprawka = -60;
}
return (((dzien-23)*24 + godzina)*60 + minuta) - 12*60 + poprawka;
}
int main() {
int dni;
int spotkan;
std::vector<std::vector<int>> poprzednik;
std::vector<std::vector<int>> uczestnikow;
scanf("%d %d", &dni, &spotkan);
poprzednik.emplace_back();
uczestnikow.emplace_back(spotkan, 0);
for (int j=0; j<spotkan; ++j) {
poprzednik[0].emplace_back(0);
}
for (int i=1; i<dni; ++i) {
scanf("%d", &spotkan);
poprzednik.emplace_back();
uczestnikow.emplace_back(spotkan, 0);
for (int j=0; j<spotkan; ++j) {
int poprzedni;
scanf("%d", &poprzedni);
poprzednik[i].emplace_back(poprzedni);
}
}
int wynik = 0;
for (int i=dni-1; 0 <= i; --i) {
int suma_dnia = 0;
for (size_t j=0; j<poprzednik[i].size(); ++j) {
if (uczestnikow[i][j] == 0) {
uczestnikow[i][j] = 1;
}
suma_dnia += uczestnikow[i][j];
//fprintf(stderr, "%d ", uczestnikow[i][j]);
if (poprzednik[i][j]) {
uczestnikow[i-1][poprzednik[i][j]-1] += uczestnikow[i][j];
}
}
wynik = std::max(wynik, suma_dnia);
//fprintf(stderr, "\n", uczestnikow[i][j]);
}
printf("%d\n", wynik);
}
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 | #include <cstdio> #include <vector> constexpr int epoka_pa(int dzien, int godzina, int minuta) { int poprawka = 0; if (29 < dzien || (dzien == 29 && 3 <= godzina)) { poprawka = -60; } return (((dzien-23)*24 + godzina)*60 + minuta) - 12*60 + poprawka; } int main() { int dni; int spotkan; std::vector<std::vector<int>> poprzednik; std::vector<std::vector<int>> uczestnikow; scanf("%d %d", &dni, &spotkan); poprzednik.emplace_back(); uczestnikow.emplace_back(spotkan, 0); for (int j=0; j<spotkan; ++j) { poprzednik[0].emplace_back(0); } for (int i=1; i<dni; ++i) { scanf("%d", &spotkan); poprzednik.emplace_back(); uczestnikow.emplace_back(spotkan, 0); for (int j=0; j<spotkan; ++j) { int poprzedni; scanf("%d", &poprzedni); poprzednik[i].emplace_back(poprzedni); } } int wynik = 0; for (int i=dni-1; 0 <= i; --i) { int suma_dnia = 0; for (size_t j=0; j<poprzednik[i].size(); ++j) { if (uczestnikow[i][j] == 0) { uczestnikow[i][j] = 1; } suma_dnia += uczestnikow[i][j]; //fprintf(stderr, "%d ", uczestnikow[i][j]); if (poprzednik[i][j]) { uczestnikow[i-1][poprzednik[i][j]-1] += uczestnikow[i][j]; } } wynik = std::max(wynik, suma_dnia); //fprintf(stderr, "\n", uczestnikow[i][j]); } printf("%d\n", wynik); } |
English