Cod sursa(job #788754)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 15 septembrie 2012 19:52:51
Problema Balans Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <iomanip>
#define NM 310

using namespace std;

ifstream f("balans.in");
ofstream g("balans.out");

int N,M,i,j,R,C,k,l;
int A[NM][NM];
double ANS=0,CANS;

void Read ()
{
    f >> N >> M >> R >> C;
    for (i=1; i<=N; i++)
        for (j=1; j<=M; j++)
        {
            f >> A[i][j];
            A[i+N][j]=A[i][j];
            A[i][j+M]=A[i][j];
            A[i+N][j+M]=A[i][j];
        }
    N<<=1;
    M<<=1;
    for (i=1; i<=N; i++)
        for (j=1; j<=M; j++)
            A[i][j]+=A[i-1][j]+A[i][j-1]-A[i-1][j-1];

    f.close();
}

void Solve ()
{
    for (k=R; k<=N/2; k++)
        for (l=C; l<=M/2; l++)
            for (i=N/2+1; i<=N; i++)
                for (j=M/2+1; j<=M; j++)
                {
                    CANS=(A[i][j]-A[i-k][j]-A[i][j-l]+A[i-k][j-l])/(1.0*k*l);
                    ANS=max(ANS,CANS);
                }
}

void Print ()
{
    g << fixed << setprecision(3) << ANS << '\n';
}

int main ()
{
    Read();
    Solve();
    Print();
    return 0;
}