Pagini recente » Borderou de evaluare (job #1567374) | Cod sursa (job #1018283) | Cod sursa (job #2342748) | Cod sursa (job #1749955) | Cod sursa (job #2644435)
#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;
}