Pagini recente » Cod sursa (job #161869) | Cod sursa (job #989817) | Monitorul de evaluare | Cod sursa (job #1760431) | Cod sursa (job #159214)
Cod sursa(job #159214)
#include<stdio.h>
long a[17][17],b[17][17],i,n,st[17],k,j,m,s,nr,max,as,ev;
int init() { st[k]=-1; return 0;}
int succesor()
{ if(st[k]<1)
{ st[k]++;
return 1;
}
return 0;
}
int valid() { return 1; }
int solutie() { return(k==m); }
int tiparire()
{ s=0; nr=0;
for(i=1;i<=m;i++) if(st[i]) for(j=1;j<=n;j++) b[j][i]=-a[j][i];
else for(j=1;j<=n;j++) b[j][i]=a[j][i];
for(i=1;i<=n;i++)
{ s=0; for(j=1;j<=m;j++) s+=b[i][j];
if(s>0) nr+=s; else nr-=s;
}
if(nr>max) max=nr;
return 0;
}
FILE *f,*g;
int main()
{ f=fopen("flip.in","r"); g=fopen("flip.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++) for(j=1;j<=m;j++) fscanf(f,"%ld",&a[i][j]);
k=1;
while(k!=0)
{ do
{ as=succesor();
if(as) ev=valid();
}
while(!(as&&ev||!as));
if(as) if(solutie()) tiparire();
else { k++;
init();
}
else k--;
}
fprintf(g,"%ld",max);
fclose(g);
return 0;
}