Cod sursa(job #191032)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 24 mai 2008 23:19:27
Problema BMatrix Scor 4
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
#define N 512
char ch,mat[N][N];
int main()
{
	
 	int min,p,rez=0,rez2=0,nr,n,m,i,j,h;
	freopen("bmatrix.in", "r",stdin);
	freopen("bmatrix.out", "w",stdout);
	scanf("%d%d\n", &n,&m);
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=m;++j)
		{
			scanf("%c", &ch);
			if(ch=='0')
				mat[i][j]=1; 
			else
				mat[i][j]=0;
		}
		scanf("%c", &ch);
	}	
	
	/*for(i=1;i<=n;++i)
	{
		for(j=1;j<=m;++j)
			printf("%d ",mat[i][j]);
		printf("\n");
	}*/	
	
	for(j=1;j<=m;++j)
	{
		nr=0;
		for(i=1;i<=n;++i)
		if(mat[i][j]==1)
			mat[i][j]=++nr;
		else 
		{
			mat[i][j]=0;
			nr=0;
		}
	}

	for(i=1;i<=n;++i)
		for(h=1;h<=m;++h)
		{
			nr=0; min=mat[i][h];
			for(j=h;j<=m;++j)
			{
				++nr;
				if(mat[i][j]<min) 
					min=mat[i][j];
				if(!mat[i][j]) 
				{
					min=3;
					nr=0; 
				}
				p=min*nr;
				//printf(" %d %d %d %d\n",p,i,j,min); 
				if(p>rez)  
				{
					rez2=rez;
					rez=p;
				}					
			}
		}
	//for(i=1;i<=n;++i) 
	//{
	//	printf("\n");
	//	for(j=1;j<=m;++j)
	//		printf(" %d", mat[i][j]); 
	//}  
	
	printf("%d\n", rez+rez2);
	
	
	return 0;
}