Cod sursa(job #1807752)

Utilizator raulmuresanRaul Muresan raulmuresan Data 16 noiembrie 2016 21:39:16
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.8 kb
#include<fstream>
#include<vector>
#include<string>
#include<stdlib.h>
#define modulo 666013

using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");


string sir;
int i, n, k, j,contor,st[1000],sol,x,y,m,maxim,maximLocal;
int a[30][30], b[30][30];

int power2(int x)
{
    int result = 1;
    for(int i =1 ;i<=x;i++)
    {
        result = result*2;
    }
    return result;
}

int main()
{
    fin >> n >> m;
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            fin >> a[i][j];
            maxim += a[i][j];
        }
    }
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            ////fout << a[i][j] << " ";
        }
        //fout <<"\n";
    }

        int powM = power2(m);
        for(i = 1; i <= powM; i++)
        {
            st[1]++;
            int sum = 0 ,selected = 0;
            for(j=1;j<=m;j++)
            {
                st[j + 1] += st[j] / 2;
                st[j] = st[j] % 2;
                //fout << st[j]<<" ";
            }
            for(j = 1;j <= n; j++)
            {
                for(k = 1;k <= m; k++)
                {
                    if(st[k] == 0)
                        b[j][k] = a[j][k];
                    else
                        b[j][k] = -a[j][k];
                    //fout << b[j][k]<<" ";
                }
                //fout<<"\n";
            }
            maximLocal = 0;
            for(j = 1;j <= n; j++)
            {
                int sum = 0;
                for(k = 1;k <= m; k++)
                {
                    sum += b[j][k];
                }
                maximLocal += abs(sum);
            }
            maxim = max(maxim,maximLocal);


        }
        fout << maxim << "\n";
}