Cod sursa(job #2585889)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 19 martie 2020 15:03:16
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 4.17 kb
#include <fstream>

using namespace std;
ifstream cin ("flip.in");
ofstream cout ("flip.out");
int a[20][20];
int main()
{
    long long n,m,i,j,ii,jj,iii,jjj,s,maxx;
    cin>>n>>m;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            cin>>a[i][j];
    maxx=-1;
    for (i=1; i<=(1<<n/2); i++)
    {
        for (ii=0; ii<n; ii++)
            if (((i>>ii)&1)==1)
            {
                for (j=1; j<=(1<<m/2); j++)
                    for (jj=0; jj<m; jj++)
                        if (((j>>jj)&1)==1)
                        {
                            s=0;
                            for (iii=1; iii<=n; iii++)
                                for (jjj=1; jjj<=m; jjj++)
                                    if (iii==ii+1 && jjj==jj+1)
                                        s=s+a[iii][jjj];
                                    else
                                        if (iii==ii+1 && jjj!=jj+1)
                                            s=s-a[iii][jjj];
                                        else
                                            if (iii!=ii+1 && jjj==jj+1)
                                                s=s-a[iii][jjj];
                                            else
                                                s=s+a[iii][jjj];
                            if (s>maxx)
                                maxx=s;
                        }
                        else
                        {
                            s=0;
                            for (iii=1; iii<=n; iii++)
                                for (jjj=1; jjj<=m; jjj++)
                                    if (iii==ii+1 && jjj==jj+1)
                                        s=s+a[iii][jjj];
                                    else
                                        if (iii==ii+1 && jjj!=jj+1)
                                            s=s-a[iii][jjj];
                                        else
                                            if (iii!=ii+1 && jjj==jj+1)
                                                s=s-a[iii][jjj];
                                            else
                                                s=s+a[iii][jjj];
                            if (s>maxx)
                                maxx=s;
                        }
            }
            else
            {
                for (j=1; j<=(1<<m/2); j++)
                    for (jj=0; jj<m; jj++)
                        if (((j>>jj)&1)==1)
                        {
                            s=0;
                            for (iii=1; iii<=n; iii++)
                                for (jjj=1; jjj<=m; jjj++)
                                    if (iii==ii+1 && jjj==jj+1)
                                        s=s+a[iii][jjj];
                                    else
                                        if (iii==ii+1 && jjj!=jj+1)
                                            s=s-a[iii][jjj];
                                        else
                                            if (iii!=ii+1 && jjj==jj+1)
                                                s=s-a[iii][jjj];
                                            else
                                                s=s+a[iii][jjj];
                            if (s>maxx)
                                maxx=s;
                        }
                        else
                        {
                            s=0;
                            for (iii=1; iii<=n; iii++)
                                for (jjj=1; jjj<=m; jjj++)
                                    if (iii==ii+1 && jjj==jj+1)
                                        s=s+a[iii][jjj];
                                    else
                                        if (iii==ii+1 && jjj!=jj+1)
                                            s=s-a[iii][jjj];
                                        else
                                            if (iii!=ii+1 && jjj==jj+1)
                                                s=s-a[iii][jjj];
                                            else
                                                s=s+a[iii][jjj];
                            if (s>maxx)
                                maxx=s;
                        }
            }
    }
    cout<<maxx;
    return 0;
}