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