#include <cstdio>
#include <vector>
using namespace std;
typedef long long I;
#define MAX 500100
I buf[2][MAX];
int main() {
vector<vector<int>> dni;
int k,n, a;
scanf("%d %d", &k,&n);
dni.push_back(vector<int>(1, 0));
dni.push_back(vector<int>(n+1,0));
for(int i=2;i<=k;i++) {
scanf("%d", &n);
vector<int> d(n+1,0);
for(int j=1;j<=n;j++) {
scanf("%d", &a);
d[j] = a;
}
dni.push_back(std::move(d));
}
I r = 0, wolne = 0;
for(int i=k;i>=1;i--) {
const auto &v = dni[i];
for(int j = 1; j < v.size() ; j++) {
if (buf[i%2][j] == 0) {
wolne --;
r = std::min(wolne, r);
buf[i%2][j] = 1;
}
// printf("%lld (%d)", buf[i%2][j], v.size());
buf[(i+1)%2][v[j]] += buf[i%2][j];
buf[i%2][j] = 0;
}
// printf("\n");
wolne += buf[(i+1)%2][0];
buf[(i+1)%2][0] = 0;
}
printf("%lld\n", -r);
}
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 | #include <cstdio> #include <vector> using namespace std; typedef long long I; #define MAX 500100 I buf[2][MAX]; int main() { vector<vector<int>> dni; int k,n, a; scanf("%d %d", &k,&n); dni.push_back(vector<int>(1, 0)); dni.push_back(vector<int>(n+1,0)); for(int i=2;i<=k;i++) { scanf("%d", &n); vector<int> d(n+1,0); for(int j=1;j<=n;j++) { scanf("%d", &a); d[j] = a; } dni.push_back(std::move(d)); } I r = 0, wolne = 0; for(int i=k;i>=1;i--) { const auto &v = dni[i]; for(int j = 1; j < v.size() ; j++) { if (buf[i%2][j] == 0) { wolne --; r = std::min(wolne, r); buf[i%2][j] = 1; } // printf("%lld (%d)", buf[i%2][j], v.size()); buf[(i+1)%2][v[j]] += buf[i%2][j]; buf[i%2][j] = 0; } // printf("\n"); wolne += buf[(i+1)%2][0]; buf[(i+1)%2][0] = 0; } printf("%lld\n", -r); } |
English