Cod sursa(job #2222061)

Utilizator Cristina-RamonaMateescu Cristina Cristina-Ramona Data 16 iulie 2018 13:35:05
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int M,N,A[18][18],smax=0;
int suma ()
    { int i,j;
      int s=0;
      for (i=1;i<=N;i++)
        for (j=1;j<=M;j++)s+=A[i][j];
      return s;

    }
void flip_lin (int i)
    { int j; for (j=1;j<=M;j++) A[i][j]*=(-1);
        }

void flip_col (int j)
    { int i; for (i=1;i<=N;i++) A[i][j]*=(-1);
        }
void backt(int k)
    { int i;

      for (i=0;i<=1;i++)
      {
          if(k<=M){flip_col(k); int s=suma();if(s>smax)smax=s;
                    backt(k+1);}
          else if(k<=M+N){ flip_lin(k-M);int s=suma(); if(s>smax)smax=s;
                         backt(k+1);
                        }

      }


    }


int main()
{   FILE *f=fopen("flip.in","rt");
    FILE *g=fopen("flip.out","wt");
    int j;
    int i;
    fscanf(f,"%d %d",&N,&M);

    for (i=1;i<=N;i++)
        for (j=1;j<=M;j++)
                {fscanf(f,"%d",&A[i][j]); smax+=A[i][j];}
    backt(1);
    fprintf(g,"%d\n",smax);

    fclose(f);
    fclose(g);
    return 0;
}