Cod sursa(job #56345)

Utilizator me_andyAvramescu Andrei me_andy Data 29 aprilie 2007 13:58:40
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>
#include<math.h>

	char a[242][242];
	int i,n,j,k,l,salv[500],cont;
	int s,s2,c,c2;
   long smax;
	FILE *f=fopen("9.in","r");
	FILE *g=fopen("sotron.out","w");
void calc(int a[500],int x,int c)
{
 int j,q,i,s=0;
 if(c==x)
 {
 for(j=1;j<=x;j++)
  for(q=x;q>=1;q--)
 {
  s=0;
  for(i=j;i<=q;i++)
	  s=s+a[i];
	if(s>smax)
		smax=s;
  }
 }
else
{
  for(i=1;i<=x;i++)
 {
   s=s+a[i];
    c++;
   if(s>smax)
     smax=s;
  if(s<0)
   s=0;
 }

}
}
int main()
{
 fscanf(f,"%d",&n);
 for(i=1;i<=n;i++)
 for(j=1;j<=n;j++)
  fscanf(f,"%d",&a[i][j]);
 smax=-25000000;

 for(i=1;i<=n;i+=2)
 {
  l=i;
  k=1;
  c=0;
  cont=1;
  c2=0;
	while(l>=1 && k<=n)
  {
	salv[cont]=a[l][k];
	 cont++;
	 c2++;
	if(c%2==0)
	 l--;
	 else
	 k++;
	c++;
  }
	calc(salv,cont,c2);
 }
 for(i=2;i<=n;i+=2)
 {
  l=i;
  k=n;
  c=0;
  cont=1;
  c2=0;
	while(l>=1 && k<=n)
  {
	salv[cont]=a[l][k];
	cont++;
	c2++;
	if(c%2==0)
	 k++;
	 else
	 l--;
	c++;
  }
  calc(salv,cont,c2);

 }
 fprintf(g,"%d",smax);
 fclose(f);
 fclose(g);
 return 0;
}