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
#include <cstdio>

using I = unsigned int;
static constexpr I MAXN=2000;
static I cnt[MAXN*MAXN];

static I calc() {
	I N, K, v, ret;
	scanf("%u %u", &N, &K);
	for (I y=0; y<N; ++y) {
		for (I x=0; x<=y; ++x) {
			I c;
			if (y == 0)
				c = 1;
			else if (y == 1)
				c = 2;
			else if (x == 0)
				c = cnt[(y-1)*MAXN]+1;
			else if (x == y)
				c = cnt[(y-1)*MAXN+x-1]+1;
			else
				c = cnt[(y-1)*MAXN+x-1]+cnt[(y-1)*MAXN+x]-cnt[(y-2)*MAXN+x-1]+1;
			cnt[y*MAXN+x] = c;
			scanf("%u", &v);
			if (c == 1)
				ret = v;
			else if (c <= K && v < ret)
				ret = v;
		}
	}
	return ret;
}

int main() {
	printf("%d\n", calc());
	return 0;
}