Pagini recente » Cod sursa (job #800597) | Cod sursa (job #3125634) | Cod sursa (job #2387915) | Cod sursa (job #350657) | Cod sursa (job #812828)
Cod sursa(job #812828)
#include<stdio.h>
#include <queue>
using namespace std;
int n,m,x,A,S[301][301],i,j,rez,l1,l2,suma,nre,a,v,cnt;
char buff[701];
int get_nr()
{
int neg;
neg=1;
int nr=0;
for(int i=cnt;i<m;i++)
{
if(buff[i]=='-') neg=-1;
else if(buff[i]>='0' && buff[i]<='9') nr=nr*10+(buff[i]-'0');
else if(buff[i]==' ') {cnt=i+1;return nr*neg;};
}
return nr*neg;
}
queue <int> Q;
int main()
{
freopen("teren.in","r",stdin);
freopen("teren.out","w",stdout);
scanf("%d%d%d",&n,&m,&x);
for (i=1;i<=n;i++)
{
scanf("%s",&buff);
for (j=1;j<=m;j++){A=get_nr(); S[i][j]=S[i-1][j]+A;}
}
rez=0;
for (l1=1;l1<=n;l1++)
for (l2=l1;l2<=n;l2++)
{
while (!Q.empty()) Q.pop();
nre=suma=0;
for (i=1;i<=m;i++)
{
v=S[l2][i]-S[l1-1][i];
Q.push(v);
nre++;
suma=suma+v;
while (suma>x) {a=Q.front(); Q.pop(); suma=suma-a; nre--;}
if (nre*(l2-l1+1)>rez) rez=nre*(l2-l1+1);
}
}
printf("%d\n",rez);
return 0;
}