Cod sursa(job #418104)

Utilizator paulbotabota paul paulbota Data 15 martie 2010 14:53:44
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
int n,m;
FILE *in=fopen("flip.in","r"), *out=fopen("flip.out","w");
long k[16][16];

void citire()
{
  int i,j;
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
      fscanf(in,"%ld",&k[i][j]);
}

void coloana(int x, int y)
{
  int i,j,sp,sn,l;
  for(i=1;i<=y;i++)
   {
     sp=sn=0;
     for(j=1;j<=x;j++)
       {
       if(k[j][i]>0) sp=sp+k[j][i];
       else sn=sn+k[j][i];
       }
       if(-sn>sp)
		{
			for(l=1;l<=x;l++) k[l][i]=-k[l][i];
		}
   }
}

void linie(int x, int y)
{
  int i,j,sp,sn,l;
  for(i=1;i<=y;i++)
   {
     sp=sn=0;
     for(j=1;j<=y;j++)
       {
       if(k[i][j]>0) sp=sp+k[i][j];
       else sn=sn+k[i][j];
       }
       if(-sn>sp)
		{
			for(l=1;l<=x;l++) k[i][l]=-k[i][l];
		}
   }
}


int main()
{
   int i,j;
   long s=0;
   fscanf(in,"%d",&n);
   fscanf(in,"%d",&m);
   citire();
   coloana(n,m);
   linie(n,m);
   for(i=1;i<=n;i++)
   {
     for(j=1;j<=m;j++)
     {
       fprintf(out,"%ld ",k[i][j]);
       s=s+k[i][j];
       }
     fprintf(out,"\n");
    }
   fprintf(out,"%ld",s);
   fclose(out);
   return 0;
}