Pagini recente » Cod sursa (job #405851) | Cod sursa (job #428037) | Cod sursa (job #3145747) | Cod sursa (job #288809) | Cod sursa (job #939986)
Cod sursa(job #939986)
#include<fstream>
using namespace std;
long long n, m, a[17][17], col[17], maxsum=0, nlin[17][2];
void verif(){
int lin[17][2];
int sum=0;
for(int i=1; i<=n; i++){
lin[i][0]=nlin[i][0]; lin[i][1]=nlin[i][1];
}
for(int j=1; j<=m; j++){
if(col[j]==-1){
for(int i=1; i<=n; i++){
lin[i][0]-=a[i][j];
lin[i][1]-=a[i][j];
}
}
}
for(int i=1; i<=n; i++)
if(lin[i][0]+lin[i][1]>0){
sum+=lin[i][0]+lin[i][1];
}else{
sum+=lin[i][0]*(-1)+lin[i][1]*(-1);
}
if(sum>maxsum)
maxsum=sum;
}
void gen(int j){
col[j]=1;
if(j<m)
gen(j+1);
else{
verif();
}
col[j]=-1;
if(j<m)
gen(j+1);
else{
verif();
}
}
int main(){
ifstream in("flip.in");
ofstream out("flip.out");
in>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++){
in>>a[i][j];
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++){
if(a[i][j]>0)
nlin[i][0]+=a[i][j];
else
nlin[i][1]+=a[i][j];
}
gen(1);
out<<maxsum<<"\n";
return 0;
}