Cod sursa(job #113024)

Utilizator IulyanutzFMI Danea Iulian Iulyanutz Data 8 decembrie 2007 14:46:19
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<fstream.h>
long int a[100][100],sl[100],sc[100];
long int i,j,n,m,poz1,poz2,s;
ifstream f("flip.in");
ofstream g("flip.out");
void citire()
{
   int i,j;
   f>>n>>m;
   for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
       f>>a[i][j];
}
void sumal()
{
   int i;
   for(i=1;i<=n;i++)
     sl[i]=0;
   for(j=1;j<=n;j++)
       for(i=1;i<=m;i++)
	 sl[j]+=a[j][i];
}
void sumac()
{
   int i,j;
   for(i=1;i<=n;i++)
      sc[i]=0;
   for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
       sc[j]+=a[i][j];
}
void alege()
{
    int i,min1,min2;
    min1=min2=100;
    sumal();                       
    sumac();
    poz1=-1;
    poz2=-1;
    for(i=1;i<=n;i++)
      if(min1>sl[i]&&sl[i]<0)
      {
	min1=sl[i];
	poz1=i;
      }
    for(i=1;i<=m;i++)
       if(min2>sc[i]&&sc[i]<0)
       {
	  min2=sc[i];
	  poz2=i;
       }
    if(min1<min2&&min1<0)
       for(i=1;i<=m;i++)
	  a[poz1][i]=-a[poz1][i];
    else
      for(i=1;i<=n;i++)
	a[i][poz2]=-a[i][poz2];
}
int main()
{
    citire();
    while(poz1!=-1&&poz2!=-1)
       alege();
    for(i=1;i<=n;i++)
    {
      for(j=1;j<=m;j++)
      {
	s+=a[i][j];
      }
    }
    g<<s;
    return 0;
}