Pagini recente » Cod sursa (job #668672) | Cod sursa (job #1057827) | Cod sursa (job #2408755) | Cod sursa (job #730251) | Cod sursa (job #789306)
Cod sursa(job #789306)
#include <fstream>
using namespace std;
int N=3,M,l[16],c[16];long a[16][16],s=0;
ifstream f("flip.in");
ofstream g("flip.out");
void col(int k,int q){
int i,j,x=0;
if(q==M+1){
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
if(c[j]){
if(a[i][j]<0)
x+=a[i][j];
else
x-=a[i][j];}
else
x+=a[i][j];
if(x>s)
s=x;
}else
while(k<2){
c[q]=k;
col(0,q+1);
k++;
}
}
void undo(){
int i,j;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
if(a[i][j]<0)
a[i][j]*=-1;
}
void line(int k,int q){
int i,j,x=0;
if(q==N+1){
for(i=1;i<=M;i++)
{ for(j=1;j<=N;j++)
if(l[j])
{a[j][i]=-a[j][i];
x-=a[j][i];
}
else
x+=a[j][i];
}
if(x>s)
s=x;
col(0,1);
undo();
}
else
while(k<2){
l[q]=k;
line(0,q+1);
k++;
}
}
int main()
{int i,j;
f>>N>>M;
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
f>>a[i][j];
line(0,1);
g<<"s="<<s;
return 0;
}