1 #include<iostream>
2 using namespace std;
3
4 const int INF = 0x3f3f3f3f;
5
6 int a, b, n;
7 int g[1010][1010];
8 int maxn[1010][1010], minn[1010][1010];
9
10 int max(int a,int b)
11
12 {
13 return a>b?a:b;
14
15 }
16
17 int min(int a,int b)
18
19 {
20 return a<b?a:b;
21
22 }
23
24 int main()
25 {
26
27 ios::sync_with_stdio(false);
28
29 cin >> a >> b >> n;
30 for (int i = 0; i < a; i++)
31 for (int j = 0; j < b; j++)
32 {
33 cin >> g[i][j];
34
35 maxn[i][j] = minn[i][j] = g[i][j];
36
37 }
38
39 for (int k = 2; k <= n; k++)
40 for (int i = 0; i + 1 < a; i++)
41 for (int j = 0; j + 1 < b; j++)
42 {
43 maxn[i][j] = max(g[i][j], max(maxn[i + 1][j + 1], max(maxn[i + 1][j], maxn[i][j + 1])));
44 minn[i][j] = min(g[i][j], min(minn[i + 1][j + 1], min(minn[i + 1][j], minn[i][j + 1])));
45 }
46
47 int minimum = INF;
48 for (int i = 0; i <= a - n; i++)
49 for (int j = 0; j <= b - n; j++)
50 minimum = min(minimum, maxn[i][j] - minn[i][j]);
51
52 cout << minimum;
53 }