Cod sursa(job #1997494)

Utilizator crisana stanescu cris Data 4 iulie 2017 15:02:17
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<iostream>
#include<fstream>
#define dim 17
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int long a[dim][dim],m,n;
void citire()
{int long i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
f>>a[i][j];}
int long suma ()
{int long i,j,s=0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
s=s+a[i][j];
return s;}
/*void scriere()
{int i,j;
for (i=1;i<=m;i++)
{for (j=1;j<=n;j++)
{cout<<a[i][j]<<" ";}
cout<<endl;}}*/
void rec()
{int long i,j,s,ma1=0,ma2=0,v1,v2;
for (i=1;i<=m;i++)
{s=0;
for (j=1;j<=n;j++)
{s=s+a[i][j];}
if ((s<0)&&((s*(-1))>ma1)) {ma1=((-1)*s);
                           v1=i;}

}
for (j=1;j<=n;j++)
{s=0;
for (i=1;i<=m;i++)
{s=s+a[i][j];}
if ((s<0)&&(s*(-1)>ma2)) {ma2=(-1)*s;
                          v2=j;}

}
if ((ma1==0)&&(ma2==0)) s=0;
else if (ma1>ma2) {for (j=1;j<=n;j++) a[v1][j]=a[v1][j]*(-1);
                   rec();}
     if (ma1<ma2) {for (i=1;i<=m;i++) a[i][v2]=a[i][v2]*(-1);
                   rec();}

}

int main ()
{f>>m>>n;
citire();
rec();
g<<suma();
f.close();
g.close();
return 0;

}