Cod sursa(job #57517)

Utilizator Mishu91Andrei Misarca Mishu91 Data 2 mai 2007 13:45:51
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<cstdio>
#include<math.h>
#define input "flip.in"
#define output "flip.out"

int v[66000];
void desc(int n,int vt[66000])
{
  int j,i=0;  
  while(n)
    {
      vt[++i]=n%2;
      n>>=1;
    }
}
void add2()
{
  int i=1;
  while(v[i]==1) {v[i]=0; i++;}
  v[i]++;
}
int main()
{
  freopen(input,"rt",stdin);
  freopen(output,"wt",stdout);
  int a[20][20],mat[20][20];
  int n,m,i,j,s,sum,max,k;
  scanf("%d %d",&n,&m);
  for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
      {scanf("%d",&a[i][j]); mat[i][j]=a[i][j];}
  max=0;
  for(k=int(pow(2,n))-1;k;--k)
  {
    add2();
    for(i=1;i<=n;++i) printf("%d",v[i]);
    printf("\n");
    sum=0;
    for(i=1;i<=n;++i)
    {
      a[i][0]=v[i];
      if(a[i][0]==1) for(j=1;j<=m;++j) mat[i][j]=-a[i][j];
    }
    for(j=1;j<=m;++j)
    {
      s=0;
      for(i=1;i<=n;++i)
        s+=mat[i][j];
      if(s>0) sum+=s;
        else sum-=s;
    }
    if(sum>max) max=sum;
  }
  printf("%d",max); 
  return 0;
}