Cod sursa(job #733779)

Utilizator dorinmoldovanMoldovan Dorin dorinmoldovan Data 12 aprilie 2012 23:23:03
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;

int b[32];
int m[16][16];

int sum(int m[16][16], int N, int M){
    int sum = 0;
    for(int i = 0; i < N; i++)
        for(int j = 0; j < M; j++)
            sum = sum + m[i][j];
    return sum;
}

void back(int k, int N, int M, int &max){
    int sumAux = 0;
    if(k - 1 == M + N){
        sumAux = sum(m,N,M);
        if(sumAux > max)
            max = sumAux;
    }
    else
      for(int i = 1; i <= M + N; i++)
        if(!b[i]){
            b[i] = 1;
            if(i <= N){
                for(int j = 0; j <= M - 1; j++)
                    m[i-1][j] = -m[i-1][j];
            }
            else{
                int col = i - N;
                for(int j = 0; j <= N - 1; j++)
                    m[j][col-1] = - m[j][col-1];
            }
            back(k+1,N,M,max);
            b[i] = 0;
        }
}

int main()
{
    int N, M;
    int max = 0;

    ifstream f ("flip.in");
    f >> N;
    f >> M;

    for(int i = 0; i < N; i++)
        for(int j = 0; j < M; j++)
            f >> m[i][j];

    f.close();

    back(1,N,M,max);

    ofstream g ("flip.out");
    g << max;
    g.close();

    return 0;
}