Pagini recente » Cod sursa (job #2357118) | Cod sursa (job #2011523) | Cod sursa (job #1604532) | Cod sursa (job #1764887) | Cod sursa (job #602653)
Cod sursa(job #602653)
#include <iostream>
#include <fstream>
#define nmax 17
#define size (sizeof(long)*8)
using namespace std;
int n, m, suma=0;
long a[nmax][nmax], b[nmax][nmax];
void reset(){
for(int i=0;i<n;++i)
for(int j=0;j<m;++j)
a[i][j] = b[i][j];
}
void citire(){
ifstream in("flip.in");
in >> n >> m;
for(int i=0;i<n;++i)
for(int j=0;j<m;++j)
in >> b[i][j];
in.close();
}
int sm(){
int s=0;
for(int i=0;i<n;++i)
for(int j=0;j<m;++j) s+= a[i][j];
return s;
}
void comuta_linie(int x){
for(int i=0;i<m;++i)
a[x][i] *= -1;
}
void comuta_coloana(int x){
for(int i=0;i<n;++i)
a[i][x] *= -1;
}
void afis(){
ofstream out("flip.out");
out << suma;
out.close();
}
bool bit(long x, int i){
return (x>>i)&1;
}
void analiz(long x, long y){
int s;
reset();
for(int i=0;i<n;++i)
if(bit(x,i)) comuta_linie(i);
for(int i=0;i<m;++i)
if(bit(y,i)) comuta_coloana(i);
s = sm();
if(s>suma) suma = s;
}
void rezolv(){
long i,j;
suma = sm();
for(i=0;i<n;++i)
for(j=0;j<m;++j)
analiz(i,j);
}
int main()
{
citire();
reset();
rezolv();
afis();
return 0;
}