Cod sursa(job #1512946)

Utilizator vladisimovlad coneschi vladisimo Data 28 octombrie 2015 20:04:46
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[20][20],b[20][20],x[40],Max,n,m,i,j;
void afis(){
    int i,s=0;
    for(i=1;i<=m;i++)
    if(x[i]==1)
    for(j=1;j<=n;j++)
    b[j][i]=-1*b[j][i];
    for(i=m+1;i<=n+m;i++)
     if(x[i]==1)
    for(j=1;j<=m;j++)
    b[i-m][j]=-1*b[i-m][j];
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        s+=b[i][j];
    if(s>Max)
        Max=s;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        b[i][j]=a[i][j];
}
void backt(int k){
    int i;
    if(k>m+n)
        afis();
    else
    for(i=0;i<=1;i++){
    x[k]=i;
    backt(k+1);
    }
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
        fin>>a[i][j];
        b[i][j]=a[i][j];
        }
    fin.close();
    backt(1);
    fout<<Max;
    fout.close();
    return 0;
}