Cod sursa(job #1893210)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 25 februarie 2017 15:48:55
Problema Balans Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("balans.in");
ofstream g("balans.out");
int n,m,r,c,i,j,L,C,v[302][302];
double sol;
int main()
{
    f>>n>>m>>r>>c;
    for(i=1;i<=n+n;++i)
        for(j=1;j<=m+m;++j)
    {
        if(i<=n&&j<=m)
        {
            f>>v[i][j];
            v[i+n][j+m]=v[i+n][j]=v[i][j+m]=v[i][j];
        }
        v[i][j]=v[i][j]+v[i][j-1]+v[i-1][j]-v[i-1][j-1];
    }
    int A=0,B=r*c;
    for(L=r;L<=n;++L)
        for(C=c;C<=m;++C)
        {
            int area=0;
            for(i=n+1;i<=n+n;++i)
                for(j=m+1;j<=m+m;++j)
                    area=max(area,v[i][j]-v[i-L][j]-v[i][j-C]+v[i-L][j-C]);
            //sol=max(sol,1.0*area/(L*C));
            if(1LL*A*L*C<1LL*area*B)
            {
                A=area;
                B=L*C;
            }
        }
    sol=1.0*A/B;
    sol=(int)(sol*1000)/1000.0;
    g<<fixed<<setprecision(3)<<sol;
    return 0;
}