Cod sursa(job #2746953)

Utilizator As932Stanciu Andreea As932 Data 28 aprilie 2021 18:27:32
Problema Balans Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax = 155;

int n, m, r, c, a[2 * nmax][2 * nmax];
double ans;

void read(){
    fin >> n >> m >> r >> c;

    for(int i = 1; i <= 2 * n; i++)
        for(int j = 1; j <= 2 * m; j++){
            fin >> a[i][j];
            a[i + n][j] = a[i][j + m] = a[i + n][j + m] = a[i][j];
        }
}

void sum(){
    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(){
    ans = -1.0;
    for(int i1 = r; i1 <= n; i1++)
        for(int j1 = c; j1 <= m; j1++)
            for(int i = n + 1; i <= 2 * n; i++)
                for(int j = m + 1; j <= 2 * m; j++)
                    if((a[i][j] - a[i - i1][j] - a[i][j - j1] + a[i - i1][j - j1]) > ans * i1 * j1)
                        ans = 1.0 * (a[i][j] - a[i - i1][j] - a[i][j - j1] + a[i - i1][j - j1]) / (i1 * j1);

    fout << fixed << setprecision(3) << (int)(ans * 1000) / 1000.0;
}

int main()
{
    read();
    sum();
    solve();

    return 0;
}