Cod sursa(job #1730529)

Utilizator xSliveSergiu xSlive Data 17 iulie 2016 00:54:33
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <bitset>
#include <math.h>
#define NMAX 20
using namespace std;
int a[20][20],n,m,sum=0;
int line[NMAX],column[NMAX];
ifstream f("flip.in");
ofstream g("flip.out");

void back2(int &sum,int k,int &maxim){
    for(int i=0;i<=1;i++){
        if(!i)sum-=2*column[k];
        else sum+=2*column[k];
        if(k==m)
            maxim=max(sum,maxim);
        else back2(sum,k +1,maxim);
    }
}

void back1(int &sum,int k,int &maxim){
    for(int i=0;i<=1;i++){
        if(!i)sum-=2*line[k];
        else sum+=2*line[k];
        if(k==n)
            back2(sum,1,maxim);
        else
            back1(sum,k+1,maxim);
    }
}



int main()
{
    f >> n >> m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            f>>a[i][j];
            line[i]+=a[i][j];
            column[j]+=a[i][j];
            sum+=a[i][j];
        }
    int digit;
    int maxim=sum;
    back1(sum,1,maxim);

    g << maxim;
    f.close();
    g.close();
    return 0;
}