Cod sursa(job #20177)

Utilizator radamiRadu Patulescu radami Data 20 februarie 2007 20:05:27
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream.h>

int n,m,mat[50][50];

void citire (int &n,int &m,int mat[50][50])
 {
  std::ifstream f ("flip.in");
  f>>n>>m;
  for (int i=0;i<n;i++)
   for (int j=0;j<m;j++)
    f>>mat[i][j];
  f.close();
 }


int suma (int n,int m,int mat[50][50])
 {
  int s=0;
  for (int i=0;i<n;i++)
   for (int j=0;j<m;j++)
    s+=mat[i][j];
  return s;
 }

int sL (int n,int mat[50][50],int k)
 {
  int s=0;
  for (int i=0;i<m;i++)
   s+=k*mat[n][i];
  return s;
 }

int sC (int n,int mat[50][50],int k)
 {
  int s=0;
  for (int i=0;i<n;i++)
   s+=k*mat[i][n];
  return s;
 }

void intoarce (int n,int m,int mat[50][50],int i,int j)
 {
  for (int k=0;k<m;k++)
   mat[i][k]*=-1;
  for (k=0;k<n;k++)
   mat[k][j]*=-1;
 }

void flip (int n,int m,int mat[50][50])
 {
  for (int i=0;i<n;i++)
   for (int j=0;j<m;j++)
    if (sC(j,mat,1)+sL(i,mat,1)<sC(j,mat,-1)+sL(i,mat,-1))
     intoarce(n,m,mat,i,j);
 }

int main ()
 {
  citire(n,m,mat);
  flip(n,m,mat);
  std::ofstream g ("flip.out");
  g<<suma(n,m,mat);
  g.close();
  return 0;
 }