Cod sursa(job #1240876)

Utilizator Athena99Anghel Anca Athena99 Data 12 octombrie 2014 11:31:47
Problema Balans Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <iomanip>

using namespace std;

ifstream fin("balans.in");
ofstream fout("balans.out");

const int out_precision= 3;
const int nmax= 150;

int s[2*nmax+5][2*nmax+5];

int main(  ) {
    int n, m, r, c;
    fin>>n>>m>>r>>c;
    for ( int i= 1; i<=n; ++i ) {
        for ( int j= 1; j<=m; ++j ) {
            fin>>s[i][j];
            s[n+i][j]= s[i][m+j]= s[n+i][m+j]= s[i][j];
        }
    }
    for ( int i= 1; i<=2*n; ++i ) {
        for ( int j= 1; j<=2*m; ++j ) {
            s[i][j]= s[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        }
    }

    double sol= 0;
    for ( int row= max(r, 1); row<=n; ++row ) {
        for ( int col= max(c, 1); col<=m; ++col ) {
            for ( int i= n+1; i<=2*n; ++i ) {
                for ( int j= m+1; j<=2*m; ++j ) {
                    double sum= s[i][j]+s[i-row][j-col]-s[i-row][j]-s[i][j-col];
                    if ( sol*row*col<sum ) {
                        sol= sum/row/col;
                    }
                }
            }
        }
    }

    fout<<setprecision(out_precision)<<fixed;
    fout<<sol<<"\n";

    return 0;
}