#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int D=0;
int n,k;
cin>>k>>n;
int spt;
int wynik=0;
vector<vector<int>> spo;
vector<vector<int>> prac;
vector<int> ilosci;
vector<int> prac1;
for (int i=0;i<n;i++){
prac1.push_back(1);
}
prac.push_back(prac1);
spo.push_back(prac1);
ilosci.push_back(n);
if (wynik<n) wynik = n;
for (int i=1;i<k;i++){
vector<int> pracownicy;
vector<int> spotkania;
cin>>n;
if (wynik<n) wynik = n;
ilosci.push_back(n);
for(int j=0;j<n;j++){
cin>>spt;
spotkania.push_back(spt);
if (spt==0 || i==k-1){
pracownicy.push_back(1);
} else {
pracownicy.push_back(1);
}
}
prac.push_back(pracownicy);
spo.push_back(spotkania);
}
int il;
if(D){
for (int i=k-1;i>-1;i--){
cout<<"spo "<<i<<" "<<spo[i].size()<<endl;
}
}
for (int i=k-1;i>0;i--){
il = ilosci[i];
if (D) cout<<"i "<<i<<" il "<<il<<endl;
if (D){
cout<<il<<" ";
for(int j=0;j<il;j++){
cout<<spo[i][j]<<" ";
}
cout<<endl;
cout<<" ";
for(int j=0;j<il;j++){
cout<<prac[i][j]<<" ";
}
cout<<endl;
}
for(int j=0;j<il;j++){
if (spo[i][j]!=0){
if (D) cout<<"dodaje j "<<j<<" "<<spo[i][j]<<endl;
prac[i-1][spo[i][j]-1]=prac[i-1][spo[i][j]-1]+prac[i][j];
if (wynik<prac[i-1][spo[i][j]-1]) {
if (D) cout<<"wieksze "<<i<<" "<<j<<" "<<prac[i-1][spo[i][j]-1]<<endl;
wynik = prac[i-1][spo[i][j]-1];
}
}
}
int r=0;
for(int j=0;j<ilosci[i-1];j++){
if (prac[i-1][j] > 1) prac[i-1][j] = prac[i-1][j]-1;
r = r + prac[i-1][j];
}
if (wynik<r) wynik = r;
}
if (D){
int i =0;
int il = ilosci[i];
cout<<il<<" ";
for(int j=0;j<il;j++){
cout<<spo[i][j]<<" ";
}
cout<<endl;
cout<<" ";
for(int j=0;j<il;j++){
cout<<prac[i][j]<<" ";
}
cout<<endl;
}
cout<<wynik;
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int D=0; int n,k; cin>>k>>n; int spt; int wynik=0; vector<vector<int>> spo; vector<vector<int>> prac; vector<int> ilosci; vector<int> prac1; for (int i=0;i<n;i++){ prac1.push_back(1); } prac.push_back(prac1); spo.push_back(prac1); ilosci.push_back(n); if (wynik<n) wynik = n; for (int i=1;i<k;i++){ vector<int> pracownicy; vector<int> spotkania; cin>>n; if (wynik<n) wynik = n; ilosci.push_back(n); for(int j=0;j<n;j++){ cin>>spt; spotkania.push_back(spt); if (spt==0 || i==k-1){ pracownicy.push_back(1); } else { pracownicy.push_back(1); } } prac.push_back(pracownicy); spo.push_back(spotkania); } int il; if(D){ for (int i=k-1;i>-1;i--){ cout<<"spo "<<i<<" "<<spo[i].size()<<endl; } } for (int i=k-1;i>0;i--){ il = ilosci[i]; if (D) cout<<"i "<<i<<" il "<<il<<endl; if (D){ cout<<il<<" "; for(int j=0;j<il;j++){ cout<<spo[i][j]<<" "; } cout<<endl; cout<<" "; for(int j=0;j<il;j++){ cout<<prac[i][j]<<" "; } cout<<endl; } for(int j=0;j<il;j++){ if (spo[i][j]!=0){ if (D) cout<<"dodaje j "<<j<<" "<<spo[i][j]<<endl; prac[i-1][spo[i][j]-1]=prac[i-1][spo[i][j]-1]+prac[i][j]; if (wynik<prac[i-1][spo[i][j]-1]) { if (D) cout<<"wieksze "<<i<<" "<<j<<" "<<prac[i-1][spo[i][j]-1]<<endl; wynik = prac[i-1][spo[i][j]-1]; } } } int r=0; for(int j=0;j<ilosci[i-1];j++){ if (prac[i-1][j] > 1) prac[i-1][j] = prac[i-1][j]-1; r = r + prac[i-1][j]; } if (wynik<r) wynik = r; } if (D){ int i =0; int il = ilosci[i]; cout<<il<<" "; for(int j=0;j<il;j++){ cout<<spo[i][j]<<" "; } cout<<endl; cout<<" "; for(int j=0;j<il;j++){ cout<<prac[i][j]<<" "; } cout<<endl; } cout<<wynik; return 0; } |
English