Cod sursa(job #733785)

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

long b[32];
long m[16][16];

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

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

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

    for(long i = 0; i < N; i++)
        for(long 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;
}