about summary refs log tree commit diff
path: root/others/easy20160714/29.c
blob: 4e81aff289e8487928689fbfcbdc7a7b776e58c6 (plain) (blame)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>

char divpp(char x, char y)
{
	return (x % y) ? (x / y + 1) : (x / y);
}

float average(int a[10][10], char t, char l, char b, char r)
{
	float s = 0.0;
	char i, j;

	for (i = t; i <= b; i++)
		for (j = l; j <= r; j++)
			s += (float) a[i][j];

	return s / (float) (b - t + 1) / (float) (r - l + 1);
}

int main()
{
	FILE *f = fopen("INP.TXT", "r");
	char m, n, s, i, i0, j, j0, b = 1;
	int a[10][10];
	float r = 0;

	fscanf(f, "%hhd %hhd %d", &m, &n, &s);

	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			fscanf(f, "%d", &a[i][j]);

	fclose(f);

	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			for (i0 = i; i0 < m; i0++)
				for (j0 = j + divpp(s, i0 - i + 1) - 1; j0 < n;
				     j0++)
					if (b || average(a, i, j, i0, j0) > r) {
						r = average(a, i, j, i0, j0);
						b = 0;
					}

	f = fopen("OUT.TXT", "w");
	fprintf(f, "%f\n", r);
	fclose(f);

	return 0;
}