Pagini recente » Cod sursa (job #1775635) | Cod sursa (job #2336603) | Cod sursa (job #674533) | Cod sursa (job #268602) | Cod sursa (job #1110294)
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int t[17][17], N,M, smax;
int checksum()
{
int i,j,suma=0;
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
suma+=t[i][j];
return suma;
}
int checkline(int a)
{
int i, suma=0;
for (i=1; i<=M; i++)
suma+=t[a][i];
return suma;
}
int checkcolumn(int a)
{
int i, suma=0;
for (i=1; i<=N; i++)
suma+=t[i][a];
return suma;
}
int checkline_r(int a)
{
int i, suma=0;
for (i=1; i<=M; i++)
suma-=t[a][i];
return suma;
}
int checkcolumn_r(int a)
{
int i, suma=0;
for (i=1; i<=N; i++)
suma-=t[i][a];
return suma;
}
void bt(int a, int b)
{
int i,j,i2,j2;
for(i=a+1; i<=N; i++)
for (j=b+1; j<=M; j++)
{
if (checkline(i)<checkline_r(i))
{
for(i2=1;i2<=M;i2++)
t[i][i2]=-t[i][i2];
bt(i, j);}
if (checkcolumn(j)<checkcolumn_r(j))
{
for(j2=1;j2<=N;j2++)
t[j2][j]=-t[j2][j];
bt(i,j);
}
if (checksum()>smax) smax=checksum();
}
}
int main ()
{
int i, j;
f>>N>>M;
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
f>>t[i][j];
bt(0,0);
g<<smax;
}