Cod sursa(job #1724170)

Utilizator cella.florescuCella Florescu cella.florescu Data 2 iulie 2016 14:28:49
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#define MAXN 16

using namespace std;

int mat[MAXN][MAXN], col[MAXN];

inline int myabs(int val){
  if(val<0)
    return -val;
  return val;
}

int main()
{
    FILE *fin, *fout;
    int n, m, nr, i, j, sum, maxim;
    fin=fopen("flip.in", "r");
    fscanf(fin, "%d%d", &n, &m);
    for(nr=0; nr<n; nr++)
      for(i=0; i<m; i++){
        fscanf(fin, "%d", &mat[nr][i]);
        col[i]+=mat[nr][i];
      }
    fclose(fin);
    maxim=-2000000000;
    for(nr=0; nr<(1<<n); nr++){
      for(i=0; i<n; i++)
        if(nr&(1<<i))
          for(j=0; j<m; j++)
            col[j]-=2*mat[i][j];
      sum=0;
      for(i=0; i<m; i++)
        sum+=myabs(col[i]);
      if(sum>maxim)
        maxim=sum;
      for(i=0; i<n; i++)
        if(nr&(1<<i))
          for(j=0; j<m; j++)
            col[j]+=2*mat[i][j];
    }
    fout=fopen("flip.out", "w");
    fprintf(fout, "%d\n", maxim);
    fclose(fout);
    return 0;
}