Cod sursa(job #164087)

Utilizator g_petricagabriel petrica g_petrica Data 23 martie 2008 15:22:18
Problema Jocul Flip Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
int n, m, l[17], c[17], v[33];
unsigned long a[17][17];
void citire();
int suma();
void citire()
 {
  int i, j;
  FILE *fin=fopen("flip.in", "rt");

  fscanf(fin, "%d %d", &n, &m);
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
    fscanf(fin, "%d", &a[i][j]);
 }
int suma()
 {
  int i, j, s=0;
  for(i=1;i<=n;i++)
   {
    l[i]=0;
   for(j=1;j<=m;j++)
    l[i]=l[i]+a[i][j];
   }
  for(i=1;i<=m;i++)
   {
   c[i]=0;
   for(j=1;j<=n;j++)
    c[i]=c[i]+a[j][i];
   }
  for(i=1;i<=n;i++)
   s=s+l[i];
  return s;
 }
int main()
 {

  FILE *fout=fopen("flip.out", "w");
  int p=1, s, max=0, ss, i;
  citire();
  ss=suma();


  while(p)
   {
    p=0;
    for(i=n+m;i>=1;i--)
     if(v[i]==0)
      {
       v[i]=1;
	p=i;
	break;
      }

     for(i=p+1;i<=n+m;i++)
      v[i]=0;

     s=ss;
     for(i=1;i<=n;i++)
      if(v[i]==1)
       s=s-2*l[i];

     for(i=n+1;i<=n+m;i++)
      if(v[i]==1)
       s=s-2*c[i-n];
      if(s>max)
       max=s;
    }

   fprintf(fout, "%d", max);
   return 0;
 }