#include<iostream> using namespace std; #define d(a) cout<<#a<<" = "<<a<<"\n"; int poss(int poziom,int pozycja){ int l,p;//ostatni pozim na ktoeym l/p koniec nie wypada p=pozycja; l=poziom-(pozycja-1); int ile=0; int c=min(poziom-l,poziom-p)+1; int m=max(poziom-l,poziom-p)+1; int r=min(l,p)-1; ile+=((c*(c+1))/2); ile+=((m-c)*c); ile+=((r*(r+1))/2); //cout<<"\ni,j ="<<poziom<<" , "<<pozycja<<"\n"; //d(l);d(p);d(c);d(m);d(r);d(ile); return ile; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; long long odp=1LL<<60LL; for(int i=1;i<=n;i++){ // d(i); for(int j=1;j<=i;j++){ long long a; cin>>a; if(k>=poss(i,j)){ odp=min(odp,a); } } } cout<<odp; } /* 1 1 2 1,2 3 1,2,3 4 1,2,3,4 */
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 | #include<iostream> using namespace std; #define d(a) cout<<#a<<" = "<<a<<"\n"; int poss(int poziom,int pozycja){ int l,p;//ostatni pozim na ktoeym l/p koniec nie wypada p=pozycja; l=poziom-(pozycja-1); int ile=0; int c=min(poziom-l,poziom-p)+1; int m=max(poziom-l,poziom-p)+1; int r=min(l,p)-1; ile+=((c*(c+1))/2); ile+=((m-c)*c); ile+=((r*(r+1))/2); //cout<<"\ni,j ="<<poziom<<" , "<<pozycja<<"\n"; //d(l);d(p);d(c);d(m);d(r);d(ile); return ile; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; long long odp=1LL<<60LL; for(int i=1;i<=n;i++){ // d(i); for(int j=1;j<=i;j++){ long long a; cin>>a; if(k>=poss(i,j)){ odp=min(odp,a); } } } cout<<odp; } /* 1 1 2 1,2 3 1,2,3 4 1,2,3,4 */ |