Pagini recente » Borderou de evaluare (job #2949969) | Cod sursa (job #931386) | Cod sursa (job #912194) | Cod sursa (job #2094923) | Cod sursa (job #608985)
Cod sursa(job #608985)
#include<iostream>
#include<fstream>
int a[301][301];
using namespace std;
int main(void)
{
int i,j,m,n,x,max=-1;
fstream f,g;
f.open("teren.in",ios::in);
g.open("teren.out",ios::out);
f>>n>>m>>x;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
f>>a[i][j];
for (i=2;i<=m;i++)
{
a[1][i]=a[1][i]+a[1][i-1];
if (a[1][i]<=x && i>max)
max=1*i;
}
for (i=2;i<=n;i++)
{
a[i][1]=a[i][1]+a[i-1][i];
if (a[i][1]<=x && i>max)
max=1*i;
}
for (i=2;i<=n;i++)
for (j=2;j<=m;j++)
a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
int k=0,aux,s,k1;
aux=m;
m=n;
n=aux;
if (n>m)
k=n;
else
k=m;
for(k1=0;k1<=k;k1++)
for(i=m-k1;i<=m;i++)
for(j=n-k+k1;j<=n;j++)
{
s=a[i][j]-a[i-m+k1][j]-a[i][j-n+k-k1]+a[i-m+k1][j-n+k-k1];
if (s<=x && i*j-(i-m+k1)*j-i*(j-n+k-k1)+(i-m+k1)*(j-n+k-k1)>max )
max=i*j-(i-m+k1)*j-i*(j-n+k-k1)+ (i-m+k1)*(j-n+k-k1);
}
g<<max;
}