Cod sursa(job #945727)

Utilizator KinetixNeacsu George Kinetix Data 2 mai 2013 18:52:13
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
/*
Jocul flip - Infoarena
*/
#include <iostream>
#include <cstdio>
using namespace std;

    long int tabla[17][17], N, M;
    void citire(int r,int c)
    {
        cin>>tabla[r][c];
        if(c<M) citire(r,c+1);
        else if(r<N) citire(r+1,1);
    }
    int comutareR(int r,long long int s)
    {
        long long int d = 0;
        for(int i=1; i<=M; i++) d+=tabla[r][i];
        if(d < d * -1) {for(int i=1; i<=N; i++) tabla[r][i]*=-1;}
        if(r<N) comutareR(r+1,s+d);
        else return s+d;
    }
    int comutareC(int c)
    {
        long long int s = 0;
        for(int i=1; i<=N; i++) s+=tabla[i][c];
        if(s < s * -1) { for(int i=1; i<=N; i++) tabla[i][c]*=-1;}
        return comutareR(1,0);
    }
    int main()
    {
        freopen("flip.in","r",stdin);
        cin>>N>>M;
        citire(1,1);
        long long int suma[N * M], maxim = 0;
        for(int i=1; i<=M; i++)
        {
            suma[i]=comutareC(i);
            if(suma[i]>maxim) maxim = suma[i];
        }
        freopen("flip.out","w",stdout);
        cout<<maxim;
    }