← Home
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 505;

int n,m,r,a[N][N],s[N][N],ans1[N][N],ans2[N][N],ans3[N][N],ans4[N][N],cir[N][N],dis[N],len[N],ans,res;

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n >> m >> r;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
	{
		cin >> a[i][j];
		s[i][j] = s[i][j-1] + a[i][j];
	}
	for(int i=0;i<=r;i++) len[i] = sqrt(r * r - i * i);
	for(int i=r+1;i<=n-r;i++) for(int j=r+1;j<=m-r;j++)
		for(int k=-r;k<=r;k++) cir[i][j] += s[i+k][j+len[abs(k)]] - s[i+k][j-len[abs(k)]-1];
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			ans1[i][j] = ans1[i][j-1]; ans2[i][j] = ans2[i][j-1];
			if(ans1[i][j] == cir[i][j]) ans2[i][j] = ans2[i][j-1] + 1;
			else if(ans1[i][j] < cir[i][j]) ans1[i][j] = cir[i][j], ans2[i][j] = 1;
		}
		for(int j=m;j>=1;j--)
		{
			ans3[i][j] = ans3[i][j+1]; ans4[i][j] = ans4[i][j+1];
			if(ans3[i][j] == cir[i][j]) ans4[i][j] = ans4[i][j+1] + 1;
			else if(ans3[i][j] < cir[i][j]) ans3[i][j] = cir[i][j], ans4[i][j] = 1;
		}
	}
	for(int i=0;i<=2*r;i++)
		for(int j=0;j<=r;j++)
			for(int k=0;k<=r;k++)
				if(j + k == i) dis[i] = max(dis[i],len[j]+len[k]+1);
	for(int i=r+1;i<=n-r;i++)
		for(int j=r+1;j<=m-r;j++)
			for(int k=1;k<=n;k++)
			{
				int num, cnt;
				if(abs(k - i) > 2 * r) num = ans1[k][m], cnt = ans2[k][m];
				else
				{
					int a1, a2, b1, b2; a1 = a2 = b1 = b2 = 0;
					if(j - dis[abs(k-i)] >= 1) a1 = ans1[k][j-dis[abs(k-i)]], b1 = ans2[k][j-dis[abs(k-i)]];
					if(j + dis[abs(k-i)] <= m) a2 = ans3[k][j+dis[abs(k-i)]], b2 = ans4[k][j+dis[abs(k-i)]];
					num = max(a1,a2);
					if(a1 == a2) cnt = b1 + b2; else if(a1 < a2) cnt = b2; else cnt = b1;
				}
				if(num > 0)
				{
					num += cir[i][j];
					if(num > ans) ans = num, res = cnt;
					else if(num == ans) res += cnt;
				}
			}
	cout << ans << " " << res / 2 << '\n';
	return 0;
}