Pagini recente » Cod sursa (job #1078999) | Cod sursa (job #3144374) | Cod sursa (job #1516793) | Borderou de evaluare (job #1849968) | Cod sursa (job #1893210)
#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;
}