Pagini recente » Cod sursa (job #2926868) | Cod sursa (job #2004264) | Cod sursa (job #1985089) | Cod sursa (job #713694) | Cod sursa (job #47464)
Cod sursa(job #47464)
#include<stdio.h>
FILE *f=fopen("flip.in","r"), *g=fopen("flip.out","w");
int n,m,v[16][16],w[16][16],i,j;
long smax=0;
void flipr(int a) {
for(int x=0;x<m;x++) w[a][x]=-w[a][x];
}
void flipc(int b) {
for(int y=0;y<n;y++) w[y][b]=-w[y][b];
}
void copiere() {
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
w[i][j]=v[i][j];
}
long sum_w() {
long s=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
s+=w[i][j];
return s;
}
void copy_r(int i) {
for(int j=0;j<m;j++) v[i][j]=w[i][j];
}
void copy_c(int j) {
for(int i=0;i<m;i++) v[i][j]=w[i][j];
}
int main() {
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++) {
fscanf(f,"%d",&v[i][j]);
smax+=v[i][j];
}
int bun=1,x,y;
while(bun) {
x=0; y=0;
for(i=0;i<n;i++) {
copiere();
flipr(i);
if(sum_w()>smax) {
smax=sum_w(); x++;
copy_r(i);
}
}
for(j=0;j<m;j++) {
copiere();
flipc(j);
if(sum_w()>smax) {
smax=sum_w(); y++;
copy_c(j);
}
}
if(x==0 && y==0) bun=0;
else bun=1;
if(bun);
}
fprintf(g,"%ld",smax);
fclose(f);
fclose(g);
return 0;
}