Cod sursa(job #1905610)

Utilizator aditoma2001Toma Adrian aditoma2001 Data 6 martie 2017 09:41:01
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.88 kb
 /* #include <bits/stdc++.h>
using namespace std;
int main()
{
    ifstream f("flip.in");
    ofstream g("flip.out");
    int n,m,a[16][16];
    f>>n>>m;
    long long spoz=0,sneg=0,sfin=0,spoz2=0,sneg2=0;0
    for (int i=1;i<=n;++i)
    {
        sneg=0;spoz=0;
        for (int j=1;j<=m;j++)
        {
            f>>a[i][j];
            if (a[i][j]>=0) spoz+=a[i][j];
            else sneg+=a[i][j];
        }
        if (spoz<-sneg)
        {
            for (int j=1;j<=m;j++)
            {
                a[i][j]=a[i][j]*(-1);
            }
        }
    }
    for (int j=1;j<=m;j++)
    {
        spoz2=0;sneg2=0;
        for (int i=1;i<=n;++i) {
            if (a[i][j]>=0) spoz2+=a[i][j];
            else sneg2+=a[i][j];
        }
        if (spoz2<-sneg2)
        {
            for (int i=1;i<=n;++i)
            {
                a[i][j]=a[i][j]*(-1);
            }
        }
    }
    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=m;j++)
        {
            sfin+=a[i][j];
        }
    }
    g<<sfin;
    return 0;
} */

#include <bits/stdc++.h>
using namespace std;
void citire(int a[16][16],int &n,int &m)
{
    ifstream f("flip.in");
    f>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    f>>a[i][j];
}
int rezolva(int a[16][16],int n,int m,int x)
{
    int s,rez=0;
    for(int i=1;i<=n;i++)
    {
        s=0;
        for(int j=1;j<=m;j++)
        {
            s+=(x & (1<<(j-1)))?a[i][j]:-a[i][j];
             if(x & (1<<(j-1)))
            cout<<"+";
            else
            cout<<"-";
        }
        rez+=abs(s);
         cout<<endl;
    }
     cout<<endl;
    return rez;
}
int main()
{
    int a[16][16],n,m,rez=0;
    ofstream g("flip.out");
    citire(a,n,m);
    for(int ocupat=0;ocupat<(1<<m);ocupat++)
    rez=max(rez,rezolva(a,n,m,ocupat));
    g<<rez;
    return 0;
}