Cod sursa(job #2030158)

Utilizator Iulia14iulia slanina Iulia14 Data 1 octombrie 2017 10:48:18
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.48 kb
#include <fstream>

using namespace std;
ifstream cin ("flip.in");
ofstream cout ("flip.out");
int a[20][20],a1[20][20],a2[20][20],a3[20][20],a4[20][20],a5[20][20],a6[20][20],a7[20][20],a8[20][20];
int main()
{
    int n,m,n1,m1,n2,s1,s2,s3,s4,m2,h,i,j,i2,max=-300000000;
    cin>>n>>m;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            cin>>a[i][j];
    n1=(1<<(n/2+n%2))-1;
    m1=(1<<(m/2+m%2))-1;
    n2=n/2+n%2;
    m2=m/2+m%2;
    for (i=0;i<=n1;i++)
    {
        for (j=0;j<n;j++)
        {
            if (i&(1<<j))
            {
                for (h=1;h<=m;h++)
                {
                    a1[j+1][h]=0-a[j+1][h];
                    a2[j+1][h]=0-a[j+1][h];
                    a3[j+1][h]=a[j+1][h];
                    a4[j+1][h]=a[j+1][h];
                }
            }
            else
            {
                for (h=1;h<=m;h++)
                {
                    a3[j+1][h]=0-a[j+1][h];
                    a4[j+1][h]=0-a[j+1][h];
                    a1[j+1][h]=a[j+1][h];
                    a2[j+1][h]=a[j+1][h];
                }
            }
        }
        for (i2=0;i2<=m1;i2++)
        {
            for (h=1;h<=n;h++)
            {
                for (j=1;j<=m;j++)
                {
                    a5[h][j]=a1[h][j];
                    a6[h][j]=a2[h][j];
                    a7[h][j]=a3[h][j];
                    a8[h][j]=a4[h][j];
                }
            }
            for (j=0;j<m;j++)
            {
                if (i2&(1<<j))
                {
                    for (h=1;h<=n;h++)
                    {
                        a5[h][j+1]=a5[h][j+1]*(-1);
                        a7[h][j+1]=a7[h][j+1]*(-1);
                    }
                }
                else
                {
                    for (h=1;h<=n;h++)
                    {
                        a6[h][j+1]=a6[h][j+1]*(-1);
                        a8[h][j+1]=a8[h][j+1]*(-1);
                    }

                }
            }
                    s1=s2=s3=s4=0;
        for (h=1;h<=n;h++)
        {
            for (j=1;j<=m;j++)
            {
                s1+=a5[h][j];
                s2+=a6[h][j];
                s3+=a7[h][j];
                s4+=a8[h][j];
            }
        }
        if (s1>max)
        max=s1;
        if (s2>max)
        max=s2;
        if (s4>max)
        max=s4;
        if (s3>max)
        max=s3;

        }

    }
    cout<<max;
    return 0;
}