Pagini recente » Borderou de evaluare (job #2022761) | Cod sursa (job #2770230) | Cod sursa (job #621410) | Borderou de evaluare (job #1566006) | Cod sursa (job #998062)
Cod sursa(job #998062)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 305;
int N, M, R, C, S[NMAX][NMAX], Mat[NMAX][NMAX];
double Ans;
int main()
{
freopen("balans.in", "r", stdin);
freopen("balans.out", "w", stdout);
scanf("%i %i %i %i", &N, &M, &R, &C);
for(int i = 1; i <= N; ++ i)
for(int j = 1; j <= M; ++ j)
{
scanf("%i", &Mat[i][j]);
Mat[i + N][j] = Mat[i][j + M] = Mat[i + N][j + M] = Mat[i][j];
}
for(int i = 1; i <= 2 * N; ++ i)
for(int j = 1; j <= 2 * M; ++ j)
S[i][j] = Mat[i][j] + S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1];
for(int Lin = R; Lin <= N; ++ Lin)
for(int Col = C; Col <= M; ++ Col)
for(int i = N + 1; i <= 2 * N; ++ i)
for(int j = M + 1; j <= 2 * M; ++ j)
{
int CurrentSum = S[i][j] - S[i - Lin][j] - S[i][j - Col] + S[i - Lin][j - Col];
if(CurrentSum > Ans * Lin * Col) Ans = 1.0 * CurrentSum / (Lin * Col);
}
printf("%f\n", Ans);
return 0;
}