Cod sursa(job #129490)

Utilizator drywaterLazar Vlad drywater Data 29 ianuarie 2008 16:38:14
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
long int a[17][17],pl[17],nel[17],pc[17],nec[17];
int f,j,i,n,m,au,s;
FILE *in,*o;
int main()
{
in=fopen("flip.in","r");
o=fopen("flip.out","w");
fscanf(in,"%d%d",&n,&m);
for(i=1;i<=n;i++)
 for (j=1;j<=m;j++)
  {
  fscanf(in,"%ld",&a[i][j]);
  if (a[i][j]<0)
   nel[i]=nel[i]+a[i][j]*(-1);
  else pl[i]=pl[i]+a[i][j];
  }
for (i=1;i<=m;i++)
 for (j=1;j<=n;j++)
  if (a[j][i]<0)
   nec[i]=nec[i]+a[j][i]*(-1);
  else pc[i]=pc[i]+a[j][i];
f=1;
while (f==1)
 {
 f=0;
 for (i=1;i<=n;i++)
  if (pl[i]<nel[i])
   {
   au=pl[i];
   pl[i]=nel[i];
   nel[i]=au;
   f=1;
   for (j=1;j<=m;j++)
    {
    if (a[i][j]>0)
     {
     pc[j]=pc[j]-a[i][j];
     nec[j]=nec[j]+a[i][j];}
    else {
	 pc[j]=pc[j]+a[i][j]*(-1);
	 nec[j]=nec[j]-a[i][j]*(-1);
	 }
    a[i][j]=a[i][j]*(-1);

    }
   }
 for (i=1;i<=m;i++)
  if (pc[i]<nec[i])
   {
   au=pc[i];
   pc[i]=nec[i];
   nec[i]=au;
   f=1;
   for (j=1;j<=n;j++)
    {
    if (a[j][i]>0)
     {
     pl[j]=pl[j]-a[j][i];
     nel[j]=nel[j]+a[j][i];}
    else {
	 pl[j]=pl[j]+a[j][i]*(-1);
	 nel[j]=nel[j]-a[j][i]*(-1);
	 }
    a[j][i]=a[j][i]*(-1);
   }
   }
 }
for (i=1;i<=n;i++)
 s=s+pl[i]-nel[i];
fprintf(o,"%d",s);
fclose(in);
fclose(o);
return 0;
}