Cod sursa(job #993739)

Utilizator cioionutFMI Ionut Ciocoiu cioionut Data 4 septembrie 2013 13:10:21
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include<iostream>
#include<fstream>
using namespace std;
int m,n;
void sumas (long x[16][16]);
void sumaj (long x[16][16]);
void sl (long i,long x[16][16]);
void sc (long i,long x[16][16]);
int main ()
{
ifstream f("flip.in");
ofstream g("flip.out");
 long i,x[16][16],j,s=0,c=1;
f>>n>>m;
for(i=0;i<n;i++)
    for(j=1;j<=m;j++) f>>x[i][j];
 sumas(x);
 sumaj(x);
 while (c)
 {   c=0;
     for(i=0;i<n;i++) if (x[i][0]<0) {x[i][0]=-x[i][0];
                                      sl(i,x);
                                      c=1;}
     for(i=1;i<=m;i++)if (x[n][i]<0) {x[n][i]=-x[n][i];
                                      sc(i,x);
                                      c=1;}
 }
 for (i=1;i<=m;i++) s+=x[n][i];
g<<s;
f.close();g.close();
    return 0;
}
void sumas (long x[16][16])
{
     for(int i=0;i<n;i++)
     {
         x[i][0]=0;
         for(int j=1;j<=m;j++) x[i][0]+=x[i][j];
     }
}
void sumaj (long x[16][16])
{
     for(int j=1;j<=m;j++)
     {
         x[n][j]=0;
         for(int i=0;i<n;i++) x[n][j]+=x[i][j];
     }

}
void sl (long i,long x[16][16])
{
    for(int j=1;j<=m;j++) {x[i][j]=-x[i][j];
                           x[n][j]+=2*x[i][j];};
}
void sc(long i,long x[16][16])
{
    for(int j=0;j<n;j++) {x[j][i]=-x[j][i];
                           x[j][0]+=2*x[j][i];};
}