Pagini recente » Cod sursa (job #777018) | Cod sursa (job #1705481) | Cod sursa (job #416024) | Cod sursa (job #2535439) | Cod sursa (job #805647)
Cod sursa(job #805647)
#include <stdio.h>
#include <fstream>
const int size = 16;
int m,n;
int board[size][size];
int config[size];
int smax;
void alter() {
for (int i=0; i<m; i++) {
config[i]=-config[i];
}
}
int sum() {
int s, ps, ns;
s = 0;
for (int i=0; i<n; i++) {
ps=ns=0;
for (int j=0; j<m; j++)
if (board[i][j]>0)
ps += config[j]*board[i][j];
else
ns -= config[j]*board[i][j];
if (ps>ns)
s = s+ps-ns;
else
s = s+ns-ps;
}
return s;
}
void bkt(int k) {
if (k==m) {
alter();
int sum_ = sum();
if (sum_ > smax)
smax = sum_;
alter();
}
else {
config[k]=-1;
bkt(k+1);
config[k]=1;
bkt(k+1);
}
}
int main() {
FILE *f = fopen("flip.in","r");
FILE *g = fopen("flip.out","w");
fscanf(f,"%d%d",&n,&m);
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
fscanf(f, "%d",&board[i][j]);
bkt(0);
fprintf(g,"%d ",smax);
fclose(f);
fclose(g);
return 0;
}