#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; } |
English