Pagini recente » Cod sursa (job #1814235) | Cod sursa (job #397277) | Cod sursa (job #2099416) | Cod sursa (job #1738080) | Cod sursa (job #1126411)
#include <cstdio>
using namespace std;
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
bool ok;int n,m;
long long maxim;
void backtrack(int v[17][17])
{long long suma=0;
int i,j,s;
for (i=1;i<=n;i++) {s=0;
for (j=1;j<=m;j++) s+=v[i][j];
if (s<0) {for (j=1;j<=m;j++) v[i][j]=-v[i][j];
backtrack(v);
for (j=1;j<=m;j++) v[i][j]=-v[i][j];}
suma+=s;
}
for (j=1;j<=m;j++) {s=0;
for (i=1;i<=n;i++) s+=v[i][j];
if (s<0) {for (i=1;i<=n;i++) v[i][j]=-v[i][j];
backtrack(v);
for (i=1;i<=n;i++) v[i][j]=-v[i][j];
}
}
if (suma>maxim) maxim=suma;
}
int main()
{int i,j,v[17][17]={0};
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) for (j=1;j<=m;j++) fscanf(f,"%d",&v[i][j]);
backtrack(v);
fprintf(g,"%lld",maxim);
return 0;
}