Cod sursa(job #1642425)

Utilizator HD650Stoicescu Adrian Nicolae HD650 Data 9 martie 2016 14:04:30
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <iostream>
#include <values.h>
long a[17][17],max=-MAXLONG,sum=0;
int v[17];
int m,n;
void flip(int k)
{
    int i;
    for(i=1; i<=n; i++)
        a[k][i]=0-a[k][i];
}
int main()
{
    ifstream f("flip.in");
    ofstream g("flip.out");
    int i,j,k=1,ok;
    long s;
    f>>m>>n;
    for(i=1; i<=m; i++)
        for(j=1; j<=n; j++)
            f>>a[i][j];
    f.close();
    v[k]=-1;
    while(k>0)
    {
        ok=0;
        while(v[k]<1&&!ok)
        {
            v[k]++;
            if(v[k]) flip(k);
            ok=1;
        }
        if(ok)
            if(m==k)
            {
                sum=0;
                for(i=1; i<=n; i++)
                {
                    s=0;
                    for(j=1; j<=m; j++)
                        s+=a[j][i];
                    if(s<0) sum=sum-s;
                    else sum+=s;
                }
                if(sum>max) max=sum;
            }
            else
                v[++k]=-1;
        else
        {
            k--;
            if(v[k]) flip(k);
        }
    }
    g<<max;
    g.close();
    return 0;
}