Cod sursa(job #1060718)

Utilizator EdyOnuEdy Onu EdyOnu Data 18 decembrie 2013 16:05:55
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m;
long a[17][17],s;
void citire()
{int i,j;
 f>>n>>m;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)f>>a[i][j];
}
int c,d,linie[17],coloana[17];
void lin(long a[17][17],int&c)
{c=0;
 for(int i=1;i<=n;i++)
  {long s=0;
   for(int j=1;j<=m;j++)s+=a[i][j];
    if(s<0)linie[++c]=i;
  }
}
void col(long a[17][17],int&d)
{d=0;
 for(int j=1;j<=m;j++)
  {long s=0;
   for(int i=1;i<=n;i++)s+=a[i][j];
   if(s<0)coloana[++d]=j;
  }
}
void ignor_linie_coloana(long a[17][17],long&s)
{int h=1;
 lin(a,c);
 col(a,d);
 s=0;
 for(int i=1;i<=n;i++)
  if(i==linie[h])h++;
  else
  {int p=1;
   for(int j=1;j<=m;j++)
    if(j==coloana[p])p++;
    else s+=a[i][j];
  }
}
void sum_tot(long a[17][17],long&s)
{int t=1,k=1;
 do
 {for(int j=1;j<=m;j++)
   {s-=a[linie[t]][j];
    a[linie[t]][j]*=(-1);
   }
   t++;
 }while(t<=c);
 do
 {for(int i=1;i<=n;i++)s-=a[i][coloana[k]];
  k++;
 }while(k<=d);
}
int main()
{citire();
 ignor_linie_coloana(a,s);
 sum_tot(a,s);
 g<<s;
    return 0;
}