Cod sursa(job #2016034)

Utilizator andrei1299Ghiorghe Andrei Alexandru andrei1299 Data 28 august 2017 14:44:54
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;
int st[18],n,m,s,k,a[18][18],b[18][18];

int sum()
{
    int i,j,ss=0,c;
    for(i=1;i<=k;i++)
    {
        for(j=1;j<=m;j++)
            b[st[i]][j]*=-1;
    }
    for(j=1;j<=m;j++)
    {
        c=0;
        for(i=1;i<=n;i++)
            {c+=b[i][j]; b[i][j]=a[i][j];}
        if(c<0) c*=-1;
        ss+=c;
    }
    return ss;
}

void Backt(int top)
{
    if(top==k+1)
    {
        s=max(s,sum());
    }
    else
    {
        for(int i=st[top-1]+1;i<=n;i++)
        {
            st[top]=i;
            Backt(top+1);
        }
    }
}

int main()
{
    int i,j;
    ifstream fin("flip.in");
    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];
            s+=a[i][j];
        }
    }
    fin.close();
    for(k=1;k<=n;k++)
        Backt(1);
    ofstream fout("flip.out");
    fout<<s;
    fout.close();
    return 0;
}