Cod sursa(job #923506)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 23 martie 2013 17:33:04
Problema Balans Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <iomanip>

#define MAX 305

using namespace std;

int N, M, R, C;
int A[MAX][MAX];
double ans;

void citire() {
    ifstream in("balans.in");
    in>>N>>M>>R>>C;
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++) {
            in>>A[i][j];
            A[i + N][j] = A[i][j + N] = A[i + N][j + N] = A[i][j];
        } in.close();
    for(int i = 1; i <= 2 * N; i++)
        for(int j = 1; j <= 2 * M; j++)
            A[i][j] += A[i - 1][j] + A[i][j - 1] - A[i - 1][j - 1];
}

void solve() {
    for(int r = R; r <= N; r++)
        for(int c = C; c <= M; c++)
            for(int i = N + 1; i <= 2 * N; i++)
                for(int j = M + 1; j <= 2 * M; j++) {
                    int rez = A[i][j] - A[i][j - c] - A[i - r][j] + A[i - r][j - c];
                    ans = max(ans, (1.0 * rez) / (1.0 * r * c));
                }
}

void afisare() {
    ofstream out("balans.out");
    out<<fixed<<setprecision(3)<<ans<<"\n";
    out.close();
}

int main() {
    citire();
    solve();
    afisare();
    return 0;
}