Cod sursa(job #2638650)

Utilizator iulianarsenoiuArsenoiu Iulian iulianarsenoiu Data 29 iulie 2020 11:40:03
Problema Balans Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;
int n,m,r,c,a[305][305];
long long s[305][305];
int main()
{
    freopen("balans.in","r",stdin);
    freopen("balans.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&r,&c);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            a[i+n][j]=a[i][j+m]=a[i+n][j+m]=a[i][j];
        }
    }
    for(int i=1;i<=2*n;i++)
    {
        for(int j=1;j<=2*m;j++)
        {
            s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        }
    }
    long double Max = 0;
    for(int i=r;i<=n;i++)
    {
        for(int j=c;j<=m;j++)
        {
            for(int L=n+1;L<=2*n;L++)
            {
                for(int C=m+1;C<=2*m;C++)
                {
                    long long sum = s[L][C]-s[L-i][C]-s[L][C-j]+s[L-i][C-j];
                    if(1.0*sum/(1.0*i*j)>Max)
                    {
                        Max=1.0*sum/(1.0*i*j);
                    }
                }
            }
        }
    }
    cout<<fixed<<setprecision(3);
    cout<<Max<<'\n';
    return 0;
}