Cod sursa(job #2644435)

Utilizator loraclorac lorac lorac Data 24 august 2020 16:48:33
Problema Balans Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("balans.in");
ofstream out("balans.out");
typedef long long ll;
ll v[305][305],n,m,l,c;
bool bigger(ll a,ll b,ll x,ll y)
{
    return a*y>x*b;
}
void afis(ll a,ll b)
{
    ll ans=(a*1000)/b;
    out<<fixed<<setprecision(3)<<1.*ans/1000<<'\n';
}
void solve50()
{
    for(ll i=1;i<=2*n;++i)
    for(ll j=1;j<=2*m;++j)
        v[i][j]+=v[i-1][j]+v[i][j-1]-v[i-1][j-1];
    ll mx=0,my=1;
    for(ll i=1;i<=n;++i)
    for(ll j=1;j<=m;++j)
    for(ll k=max(i+l-1,i);k<=min(2*n,i+n-1);++k)
    for(ll r=max(j+c-1,j);r<=min(2*m,j+m-1);++r)
    {
        ll sum=v[k][r]-v[i-1][r]-v[k][j-1]+v[i-1][j-1],dim=(k-i+1)*(r-j+1);
        if(bigger(sum,dim,mx,my))
        {
            mx=sum;
            my=dim;
        }
    }
    afis(mx,my);
}
int main()
{
    in>>n>>m>>l>>c;
    for(ll i=1;i<=n;++i)
    for(ll j=1;j<=m;++j)
    {
        in>>v[i][j];
        v[i+n][j]=v[i][j+m]=v[i+n][j+m]=v[i][j];
    }
    solve50();
    return 0;
}