Cod sursa(job #1207757)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 13 iulie 2014 19:54:28
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <cstdio>
using namespace std;
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
int v[20][20],n,m,smin;

inline int sumlin(int i)
{int j;
int sum=0;
for (j=1;j<=m;j++) sum+=v[i][j];
return sum;
}
inline int sumcol(int j)
{int i;
int sum=0;
for (i=1;i<=n;i++) sum+=v[i][j];
return sum;
}
inline void revlin(int i)
{int j;
for (j=1;j<=m;j++) v[i][j]=-v[i][j];}

inline void revcol(int j)
{int i;
for (i=1;i<=n;i++) v[i][j]=-v[i][j];}



int main()
{int i,j,l,c;
long long s;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) for (j=1;j<=m;j++) fscanf(f,"%d",&v[i][j]);

do
{l=0;c=0;
smin=0;

for (i=1;i<=n;i++) {s=sumlin(i);
                    if (s<smin) {l=i;
                                 smin=s;}
                    }
for (j=1;j<=m;j++) {s=sumcol(j);
                    if (s<smin) {c=j;
                                 smin=s;}
                    }
if (sumlin(l)<sumcol(c)) revlin(l);
                    else revcol(c);
}while (smin<0);






s=0;
for (i=1;i<=n;i++) for (j=1;j<=m;j++) s+=v[i][j];
fprintf(g,"%lld",s);
return 0;
}