Pagini recente » Cod sursa (job #3254830) | Cod sursa (job #2059084) | Cod sursa (job #838632) | Cod sursa (job #2109100) | Cod sursa (job #422017)
Cod sursa(job #422017)
# include <stdio.h>
# define MAXN 150
long int a[2*MAXN+1][2*MAXN+1],sum[2*MAXN+1][2*MAXN+1];
long int n,m,r,c;
void citire()
{
FILE *f=fopen("balans.in","r");
fscanf(f,"%ld%ld%ld%ld",&n,&m,&r,&c);
long int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
fscanf(f,"%ld",&a[i][j]);
a[i+n][j]=a[i][j];
a[i][j+m]=a[i][j];
a[i+n][j+m]=a[i][j];
}
fclose(f);
for (i=1;i<=2*n;i++)
for (j=1;j<=2*m;j++)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
}
void scrie(float sol)
{
FILE *g=fopen("balans.out","w");
fprintf(g,"%ld",(long int)sol);
fprintf(g,".%ld\n",((long int)(sol*1000))%1000);
fclose(g);
}
float calculeaza()
{
long int i,j,k,l;
float sol = sum[r][c]/(r*c),solloc,supk,supl;
for (i=1;i<=2*n;i++)
for (j=1;j<=2*m;j++)
for (supk = ((n<=i-r)? n: i-r), k = ((i-n > 0) ? i-n : 0) ; k<=supk; k++)
for (supl = ((m<=j-c)? m : j-c), l = ((j-m > 0) ? j-m : 0); l <=supl; l++)
{
printf("(%ld %ld) -> (%ld %ld)\n",k,l,i,j);
solloc = ((float)(sum[i][j]-sum[k][j]-sum[i][l]+sum[k][l]))/((i-k)*(j-l));
if (solloc > sol)
sol = solloc;
}
return sol;
}
int main()
{
citire();
float sol = calculeaza();
scrie(sol);
return 0;
}