#include <iostream> #include <algorithm> using namespace std; int n, k; const int duzo= 999999999; int rok[2002][2002]; //int min_rok[2002][2002]; int il_butelek[2002][2002]; /// za gory +ja int main () { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; for (int wiersz=1; wiersz<=n ;wiersz++) { rok[wiersz][0]= duzo; for (int kolumna=1; kolumna<=wiersz ;kolumna++) cin >> rok[wiersz][kolumna]; rok[wiersz][wiersz+1]= duzo; } /* min_rok[1][1]= rok[1][1]; min_rok[1][0]=min_rok[1][2]= duzo; for (int wiersz=2; wiersz<=n ;wiersz++) { min_rok[wiersz][0]= duzo; for (int kolumna=1; kolumna<=wiersz ;kolumna++) min_rok[wiersz][kolumna]= min(min(min_rok[wiersz-1][kolumna-1], min_rok[wiersz-1][kolumna]), rok[wiersz][kolumna]); min_rok[wiersz][wiersz+1]= duzo; }*/ il_butelek[1][1]= 1; il_butelek[1][0]=il_butelek[1][2]= 0; il_butelek[2][1]=il_butelek[2][2]= 2; il_butelek[2][0]=il_butelek[2][3]= 0; for (int wiersz=3; wiersz<=n ;wiersz++) { il_butelek[wiersz][0]= 0; for (int kolumna=1; kolumna<=wiersz ;kolumna++) il_butelek[wiersz][kolumna]= il_butelek[wiersz-1][kolumna-1]+il_butelek[wiersz-1][kolumna]-il_butelek[wiersz-2][kolumna-1]+1; il_butelek[wiersz][wiersz+1]= 0; } int wnk= duzo; for (int wiersz=1; wiersz<=n ;wiersz++) for (int kolumna=1; kolumna<=wiersz ;kolumna++) if (il_butelek[wiersz][kolumna]<=k) wnk= min(wnk, rok[wiersz][kolumna]); cout << wnk << "\n"; 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 | #include <iostream> #include <algorithm> using namespace std; int n, k; const int duzo= 999999999; int rok[2002][2002]; //int min_rok[2002][2002]; int il_butelek[2002][2002]; /// za gory +ja int main () { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; for (int wiersz=1; wiersz<=n ;wiersz++) { rok[wiersz][0]= duzo; for (int kolumna=1; kolumna<=wiersz ;kolumna++) cin >> rok[wiersz][kolumna]; rok[wiersz][wiersz+1]= duzo; } /* min_rok[1][1]= rok[1][1]; min_rok[1][0]=min_rok[1][2]= duzo; for (int wiersz=2; wiersz<=n ;wiersz++) { min_rok[wiersz][0]= duzo; for (int kolumna=1; kolumna<=wiersz ;kolumna++) min_rok[wiersz][kolumna]= min(min(min_rok[wiersz-1][kolumna-1], min_rok[wiersz-1][kolumna]), rok[wiersz][kolumna]); min_rok[wiersz][wiersz+1]= duzo; }*/ il_butelek[1][1]= 1; il_butelek[1][0]=il_butelek[1][2]= 0; il_butelek[2][1]=il_butelek[2][2]= 2; il_butelek[2][0]=il_butelek[2][3]= 0; for (int wiersz=3; wiersz<=n ;wiersz++) { il_butelek[wiersz][0]= 0; for (int kolumna=1; kolumna<=wiersz ;kolumna++) il_butelek[wiersz][kolumna]= il_butelek[wiersz-1][kolumna-1]+il_butelek[wiersz-1][kolumna]-il_butelek[wiersz-2][kolumna-1]+1; il_butelek[wiersz][wiersz+1]= 0; } int wnk= duzo; for (int wiersz=1; wiersz<=n ;wiersz++) for (int kolumna=1; kolumna<=wiersz ;kolumna++) if (il_butelek[wiersz][kolumna]<=k) wnk= min(wnk, rok[wiersz][kolumna]); cout << wnk << "\n"; return 0; } |