Cod sursa(job #1934831)

Utilizator Belu99Bibo Bela Belu99 Data 21 martie 2017 20:59:10
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m,a[17][17],b[17][17],vc[17],vl[17],ma,s=0;
void suma(int k1,int k2)
{
    int i,j,s=0;;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            b[i][j]=a[i][j];
    for(j=1;j<=k1;j++)
        for(i=1;i<=n;i++)
            b[i][vc[j]]*=(-1);
    for(i=1;i<=k2;i++)
        for(j=1;j<=m;j++)
            b[vl[i]][j]*=(-1);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s+=b[i][j];
    if(s>ma)
        ma=s;
}
void bkt_linii(int k1,int k2,int p)
{
    int i,q;
    for(i=vl[k2-1]+1;i<=n;i++)
    {
        vl[k2]=i;
        if(k2==p)
            suma(k1,k2);
        else
            bkt_linii(k1,k2+1,p);
    }
}
void bkt_coloane(int k1,int p)
{
    int i,j,q;
    for(i=vc[k1-1]+1;i<=m;i++)
    {
        vc[k1]=i;
        if(k1==p)
        {
            suma(k1,0);
            for(j=1;j<=n;j++)
            bkt_linii(k1,1,j);
        }
        else
            bkt_coloane(k1+1,p);
    }
}
int main()
{
    int i,j;
    ifstream f("flip.in");
    ofstream g("flip.out");
    f>>n;
    f>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        {
            f>>a[i][j];
            s+=a[i][j];
        }
    ma=s;
    for(i=1;i<=m;i++)
        bkt_coloane(1,i);
    g<<ma;
    return 0;
}