Cod sursa(job #61049)

Utilizator FlorianFlorian Marcu Florian Data 17 mai 2007 23:10:23
Problema BMatrix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
long n,m,solmax,sol,linie,maxim;
char a[201][201];
FILE*g=fopen("bmatrix.out","w");
void afis()
	{
	int i,j;
	for(i=1;i<=n;++i)
	      {	for(j=1;j<=m;++j)
		 fprintf(g,"%c ",a[i][j]);
		 fprintf(g,"\n");}}
void citire()
	{
	int i,j;
	FILE*f=fopen("bmatrix.in","r");
	fscanf(f,"%ld %ld\n",&n,&m);
	for(i=1;i<=n;i++)
	       {	for(j=1;j<=m;j++)
		fscanf(f,"%c",&a[i][j]);
		fscanf(f,"\n");}
	}
int check(int p, int k, int col)
	{
	int ok=1,i,j,s=0;
	//a[col][p] - a[col][k];
	i=p; j=k;
	while(p<=k)
		{
		if (a[col][p]!=a[col][k]||a[col][p]=='1') {ok=0; break;}
		else {p++; k--;}
		}
	if(ok==1&&col+1<=n) check(i,j,col+1);
	else if (ok==1) return (col-linie+1)*(j-i+1);
	else return (col-linie)*(j-i+1);
	}
void max(int sol)
	{
	if (sol>solmax)
		{
		maxim=solmax; solmax=sol;
		}
	else if (sol>maxim) maxim=sol;
	}
int main()
	{
	int i,j,k;
	citire();
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		    if(a[i][j]=='0')
		    for(k=m;k>=j;k--)
		    {
		    sol=0;
		    linie=i;
		    max(check(j,k,i));
		    }
		afis();
	fprintf(g,"\n%ld %ld",solmax,maxim);
	}