#include <iostream>
#include <vector>
using namespace std;
int main() {
int k, n;
cin >> k >> n;
vector dni = vector(k+1, vector<int>(0));
dni[0] = vector<int>(0);
dni[1] = vector<int>(n, 0);
for (int i = 2; i < dni.size(); i++) {
int n;
cin >> n;
for (int j = 0; j < n; j++) {
int tmp;
cin >> tmp;
dni[i].push_back(tmp);
}
}
vector<int> now(dni.back().size(), 0);
int free_now = 0;
int men_total = 0;
for (int i = dni.size() - 1; i > 0; i--) {
int free_prev = 0;
vector<int> prev = vector<int>(dni[i-1].size(), 0);
for (int j = 0; j < now.size(); j++) {
if (now[j] == 0) {
now[j] = 1;
if (free_now > 0)
free_now--;
else
men_total++;
}
if(dni[i][j] != 0) {
prev[dni[i][j] - 1] += now[j];
} else {
free_prev += now[j];
}
}
free_now = free_prev + free_now;
now = std::move(prev);
}
cout << men_total;
}
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 | #include <iostream> #include <vector> using namespace std; int main() { int k, n; cin >> k >> n; vector dni = vector(k+1, vector<int>(0)); dni[0] = vector<int>(0); dni[1] = vector<int>(n, 0); for (int i = 2; i < dni.size(); i++) { int n; cin >> n; for (int j = 0; j < n; j++) { int tmp; cin >> tmp; dni[i].push_back(tmp); } } vector<int> now(dni.back().size(), 0); int free_now = 0; int men_total = 0; for (int i = dni.size() - 1; i > 0; i--) { int free_prev = 0; vector<int> prev = vector<int>(dni[i-1].size(), 0); for (int j = 0; j < now.size(); j++) { if (now[j] == 0) { now[j] = 1; if (free_now > 0) free_now--; else men_total++; } if(dni[i][j] != 0) { prev[dni[i][j] - 1] += now[j]; } else { free_prev += now[j]; } } free_now = free_prev + free_now; now = std::move(prev); } cout << men_total; } |
English