Cod sursa(job #8406)

Utilizator lorin_bobuBobulisteanu Lorin lorin_bobu Data 24 ianuarie 2007 18:48:15
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>

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

int n,m,v[16][16],i,j;
long smax=0;

void flipr(int a) {
   for(int x=0;x<m;x++) v[a][x]=-v[a][x];
}

void flipc(int b) {
   for(int y=0;y<n;y++) v[y][b]=-v[y][b];
}

int sumar(int x) {
   int s=0;
   for(int a=0;a<m;a++) s+=v[x][a];
   return s;
}

int difr(int x) {
   int s=0;
   for(int a=0;a<m;a++) s-=v[x][a];
   return s;
}

int sumac(int y) {
   int s=0;
   for(int b=0;b<n;b++) s+=v[b][y];
   return s;
}

int difc(int y) {
   int s=0;
   for(int b=0;b<n;b++) s-=v[b][y];
   return s;
}

int main() {
   fscanf(f,"%d",&n);
   fscanf(f,"%d",&m);
   for(i=0;i<n;i++)
      for(j=0;j<m;j++)
	  fscanf(f,"%d",&v[i][j]);
   i=j=0;
   while(i<n && j<m) {
       if(sumar(i)<0) { flipr(i); i=j=0; }
       else i++;
       if(sumac(j)<0) { flipc(j); i=j=0; }
       else j++;
   }
   for(i=0;i<n;i++)
      for(j=0;j<m;j++)
	 smax+=v[i][j];
   fprintf(g,"%li",smax);
   fclose(f);
   fclose(g);
   return 0;
}