Cod sursa(job #473618)

Utilizator andreigAndrei Geacar andreig Data 30 iulie 2010 16:48:30
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<stdio.h>
#include<stdlib.h>
int n,m;


void col(int p,int **a)
{
    int i;
       for(i=0;i<n;i++)
         a[i][p]*=-1;  
}

void lin(int p,int **a)
{
    int j;
       for(j=0;j<m;j++)
         a[p][j]*=-1;  
}


int eval(int **a)
{
    int sum=0,i,j;
    for(i=0;i<n;i++)
     for(j=0;j<m;j++)
         sum+=a[i][j];
    return sum;
}


int main(void)
{
    FILE * fin = fopen("flip.in","r");
    FILE * fout = fopen("flip.out","w");
    int i,j;
    int **a;
    fscanf(fin,"%d %d",&n,&m);
    a=(int**)malloc(sizeof(int*)*n);
    for(i=0;i<n;i++)
       a[i]=(int*)malloc(sizeof(int)*m);
    for(i=0;i<n;i++)
       for(j=0;j<m;j++)
             fscanf(fin,"%d",&a[i][j]);
   int mod=1;   
   int sum,sumaux;
   sum=eval(a);   
   while(mod)
   {
       printf("%d\n",sum);
       mod=0;
       for(i=0;i<n;i++)
       {
         lin(i,a);
         sumaux=eval(a);
         if(sumaux>sum)
         {
           mod=1;
           sum=sumaux;
           break;
         }
         else
            lin(i,a);
       }
       for(j=0;j<n;j++)
       {
          col(j,a);
          sumaux=eval(a);
          if(sumaux>sum)
          {
            mod=1;
            sum=sumaux;
            break;
          }
          else
             col(j,a);
       }
       
       
       
   }   
    fprintf(fout,"%d",sum);     
             
}