Cod sursa(job #1207022)

Utilizator BabutaRaresBabuta Rares Mihai BabutaRares Data 11 iulie 2014 20:22:30
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int st[33],a[17][17],n,m,maxim;
void citire()
{
    f>>n>>m;
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            f>>a[i][j];
            a[0][j]+=a[i][j];
            a[i][0]+=a[i][j];
            maxim+=a[i][j];
        }
}
int suma(int k)
{
    int i,s=0,j;
    for(i=1;i<=k;i++)
    {
        if(st[i]<=n)
            for(j=1;j<=m;j++)
                a[st[i]][j]*=(-1);
        else
            for(j=1;j<=n;j++)
                a[j][st[i]-n]*=(-1);
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s+=a[i][j];
    for(i=1;i<=k;i++)
    {
        if(st[i]<=n)
            for(j=1;j<=m;j++)
                a[st[i]][j]*=(-1);
        else
            for(j=1;j<=n;j++)
                a[j][st[i]-n]*=(-1);
    }
    return s;
}
void bkt(int k)
{
    int i,s;
    for(i=st[k-1]+1;i<=n+m;i++)
    {
        st[k]=i;
        s=suma(k);
        if(s>maxim)
            maxim=s;
        bkt(k+1);
    }
}
int main()
{
    citire();
    bkt(1);
    g<<maxim;
    return 0;
}