Pagini recente » Cod sursa (job #493690) | Cod sursa (job #1038466) | Cod sursa (job #2433831) | Cod sursa (job #418726) | Cod sursa (job #1342091)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int m,n,smax;
int t[16][16], c[16][16]; // t[n][m]
void reset()
{
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
t[i][j] = c[i][j];
}
void calc(){
int s;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
s+=t[i][j];
smax = s>smax?s:smax;
}
void flip(int k){ // k<=n+m
bool sw; // false - n, true - m;
if(k>n)k-=n, sw=true;
if(sw)
for(int i=1; i<=n; ++i)
t[i][k]=-t[i][k];
else
for(int i=1; i<=m; ++i)
t[k][i]=-t[k][i];
}
int main() {
fin>>n>>m;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j){
fin>>t[i][j];
c[i][j]=t[i][j];
}
long i,lim=1<<n+m;
for(i=1; i<lim; ++i){
for(int j=1; j<=n+m; ++j){
if(i & (1<<(j-1)))
flip(j);
}
fout<<"";
calc();
reset();
}
fout<<smax;
return 0;
}