Cod sursa(job #188683)

Utilizator laplaceConstantin Macari laplace Data 9 mai 2008 16:59:51
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include<stdio.h>  
//#include<stdlib.h>  
     
int mat[17][17],m,n,max=0;

void flip(int aux[]){
     int sum,i,j,maxx;
     for(i=0;i<m;i++)
                     if(aux[i]==1)
                                  for(j=0;j<n;j++)
                                                  mat[i][j]*=-1;
     maxx=0;
     for(j=0;j<n;j++){
                      sum=0;
                      for(i=0;i<m;i++)
                                      sum+=mat[i][j];
                      if(sum<0)
                               maxx-=sum;
                      else
                          maxx+=sum;
                      }
     if(maxx>max)
                 max=maxx;
     for(i=0;i<m;i++)
                     if(aux[i]==1)
                                  for(j=0;j<n;j++)
                                                  mat[i][j]*=-1;
     }

int main(){
    int i,j,k=1,oks;
    int aux[20];
    freopen("flip.in","r+",stdin);
    freopen("flip.out","w+",stdout);
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
                    for(j=0;j<n;j++)
                                    scanf("%d",&mat[i][j]);
    aux[k]=-1;
    while(k>0){
              oks=0;
              while((oks==0)&&(aux[k]<1)){
                                          aux[k]++;
                                          oks=1;
                                          }
              if(oks)
                     if(k==m)
                             flip(aux);
                     else
                         aux[++k]=-1;
              else
                  k--;
              }
    printf("%d",max);
    return 0;
}