Pagini recente » Cod sursa (job #2401417) | Cod sursa (job #1133551) | Cod sursa (job #2521596) | Cod sursa (job #2465058) | Cod sursa (job #805639)
Cod sursa(job #805639)
#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++) {
if (config[i]==1)
for (int j=0; j<n; j++)
board[j][i]*=-1;
}
}
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 += board[i][j];
else
ns -= 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]=0;
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;
}