#pragma GCC optimize("Ofast") #include <iostream> #include <algorithm> using namespace std; int n,k,it=1,it2,minn=2019,beczki[2001001],drzewo[2001001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) cin>>beczki[i*(i-1)/2+j]; for(int i=0; i<n; i++) { it+=i; drzewo[it]=i; } for(int i=n-1; i>0; i--) { for(int j=1; j<=k-i+1; j++) drzewo[(i+j)*(i+j-1)/2+j+1]=drzewo[i*(i-1)/2+1]+i*j; } int p=min((n*(n+1)/2+1),((k+1)*(k+2)/2)); for(int i=1; i<p; i++) if(drzewo[i]<=k&&beczki[i]<minn) minn=beczki[i]; cout<<minn; 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 | #pragma GCC optimize("Ofast") #include <iostream> #include <algorithm> using namespace std; int n,k,it=1,it2,minn=2019,beczki[2001001],drzewo[2001001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) cin>>beczki[i*(i-1)/2+j]; for(int i=0; i<n; i++) { it+=i; drzewo[it]=i; } for(int i=n-1; i>0; i--) { for(int j=1; j<=k-i+1; j++) drzewo[(i+j)*(i+j-1)/2+j+1]=drzewo[i*(i-1)/2+1]+i*j; } int p=min((n*(n+1)/2+1),((k+1)*(k+2)/2)); for(int i=1; i<p; i++) if(drzewo[i]<=k&&beczki[i]<minn) minn=beczki[i]; cout<<minn; return 0; } |