Cod sursa(job #48912)

Utilizator lorin_bobuBobulisteanu Lorin lorin_bobu Data 5 aprilie 2007 10:37:49
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 12.99 kb
#include<stdio.h>

FILE *f=fopen("flip.in","r"), *g=fopen("flip.out","w");

int n,m,a[16][16];
long smax;

long sumac(int c) {
   long s=0;
   for(int i=0;i<n;i++) s+=a[i][c];
   return s;
}

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

void schimbac(int j) {
   for(int i=0;i<n;i++) a[i][j]=-a[i][j];
}

void schimbal(int i) {
   for(int j=0;j<m;j++) a[i][j]=-a[i][j];
}

void coloane() {
   for(int j=0;j<m;j++)
      if(sumac(j)<0) schimbac(j);
}

void gen(int i) {
   for(int k=1;k<=2;k++) {
      if(k==2) schimbal(i);
      coloane();
      if(smax<suma()) smax=suma();
      if(i<n-1) gen(i+1);
   }
}

int main() {
   fscanf(f,"%d %d",&n,&m);
   for(int i=0;i<n;i++)
      for(int j=0;j<m;j++) {
	 fscanf(f,"%d",&a[i][j]);
	 smax+=a[i][j];
      }
   gen(0);
   fprintf(g,"%ld",smax);
   fclose(f);
   fclose(g);
   return 0;
}