Cod sursa(job #2585889)
Utilizator | 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;
}