Cod sursa(job #107679)

Utilizator rethosPaicu Alexandru rethos Data 20 noiembrie 2007 10:31:22
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream.h>
long long a[16][16];
int n,m;
long long sumal(int l)
{ int i;
  long long s=0;
  for (i=1;i<=m;i++) s+=a[l][i];
  return s;
}
long long sumac(int c)
{ int i;
  long long s=0;
  for (i=1;i<=n;i++) s+=a[i][c];
  return s;
}
void flipl(int l)
{ int i;
  for (i=1;i<=m;i++) a[l][i]=-a[l][i];
}
void flipc(int c)
{ int i;
  for (i=1;i<=n;i++) a[i][c]=-a[i][c];
}
long long abs(long long x)
{ if (x>0) return x;
  return -x;
}

int main()
{ int i,j;
  long long s;
  ifstream f("flip.in");
  f>>n>>m;
  for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		f>>a[i][j];
  f.close();
  ofstream g("flip.out");
  for (i=1;i<=n;i++)
	if (sumal(i)<0) flipl(i);
  for (j=1;j<=m;j++)
	if (sumac(j)<0) flipc(j);
  for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		{ if (sumal(i)-a[i][j]<0&&sumac(j)-a[i][j]<0)
			{ flipl(i);
			  flipc(j);
			}
		  else if (sumal(i)-a[i][j]<0&&abs(sumal(i)) > abs(sumac(j)))
			{ flipl(i);
			  flipc(j);
			}
		  else if (sumac(j)-a[i][j]<0&&abs(sumac(j)) > abs(sumal(i)))
			{ flipl(i);
			  flipc(j);
			}
		}
  s=0;
  for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		s+=a[i][j];
  g<<s;
  g.close();
  return 0;
}