Pagini recente » Cod sursa (job #2810242) | Cod sursa (job #38060) | Cod sursa (job #3128108) | Cod sursa (job #2935135) | Cod sursa (job #222951)
Cod sursa(job #222951)
#include<stdio.h>
long long n,k,ev,as,s,Ts[17],m,a[17][17],st[100];
FILE*in = fopen("flip.in","r");
FILE*out= fopen("flip.out","w");
void init(){
st[k]=-1;
}
int succesor(){
if(st[k]<1){
st[k]++;
return 1;
}else
return 0;
}
int valid(){
return 1;
}
int solutie(){
return k==m;
}
void tipar(){
int i,j;
int s1=0,s2=0;
for(i=1;i<=n;i++){
s1=0;
s2=0;
for(j=1;j<=m;j++)
if(st[j] == 0){
s1 += a[i][j];
s2 -= a[i][j];
}else{
s1 -=a[i][j];
s2 +=a[i][j];
}
if(s1>s2 && s1>Ts[i])Ts[i] = s1;
if(s2>s1 && s2>Ts[i])Ts[i] = s2;
}
}
void bt(){
k=1;
init();
while(k){
as=1;ev=0;
while(as && !ev){
as=succesor();
if(as) ev=valid();
}
if(as)
if(solutie()){tipar();}
else{k++;init();}
else
k--;
}
}
int main(){
int i,j;
fscanf(in,"%lld%lld", &n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(in,"%lld", &a[i][j]);
bt();
s=0;
for(i=1;i<=n;i++)
s+=Ts[i];
fprintf(out, "%lld",s);
return 0;
}