Cod sursa(job #77790)

Utilizator GumiPipeNoName GumiPipe Data 14 august 2007 20:33:43
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
#include <stdlib.h>

int n, m, Tabla[16][16], Tabla2[16][16];

void Csere(int j)
{
  int i;

  for (i = 0; i < m; ++i)
  Tabla2[j][i] = Tabla[j][i] * (-1);
}

int Summa()
{
  int i, j;
  long long int r1, r = 0;

  for (i = 0; i < m; ++i)
  {
    r1 = 0;
    for (j = 0; j < n; ++j)
      r1 += Tabla2[j][i];
    r += abs(r1);
  }
  return(r);
}


int main()
{
  int i, j, k = 0, v[16], ok = 0;
  FILE *f;
  long long int r1 = 0, r = 0;

  f = fopen("flip.in", "rt");
  fscanf(f,"%d %d\n", &n, &m);
  for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j)
    {
      fscanf(f, "%d ", &Tabla[i][j]);
      Tabla2[i][j] = Tabla[i][j];
    }
  fclose(f);

  v[k] = -1;
  while (k > -1)
  {
    ok = 0;
    while (ok != 1 && v[k] < 1)
    {
      ok = 1;
      ++v[k];
    }

    if (ok)
      if (k == n - 1)
      {
	for (i = 0; i < n; ++i)
	  for  (j = 0; j < m; ++j)
	    Tabla2[i][j] = Tabla[i][j];
	for (i = 0; i < n; ++i)
	  if (v[i] == 1)
	    Csere(i);
	r1 = Summa();
	if (r1 > r) r = r1;
      }
      else
      {
	++k;
	v[k] = -1;
      }
    else
      --k;
  }

  f = fopen("flip.out", "wr");
  fprintf(f, "%Li", r);
  fclose(f);

  return(0);
}