Pagini recente » Cod sursa (job #1408893) | Cod sursa (job #724420) | Cod sursa (job #1067286) | Cod sursa (job #3351050) | Cod sursa (job #604779)
Cod sursa(job #604779)
//#include<iostream>
#include<fstream>
using namespace std;
int N,M,smax;
int v[16][16];
int w[34], k=0; //w=stiva, 0= nu inmultim cu -1, 1= inmultim cu -1
//w[0->N-1] = linii, w[N->M-1] = col
ifstream fin ("flip.in");
ofstream fout ("flip.out");
int s_col (int j) {//suma coloana
int sum=0;
for (int i=0;i<N;i++)
sum+=v[i][j] * ((w[i]==0)?1:(-1)); //suma elementelor col j inmultita cu -1 sau nu
if (sum<0) return (sum*(-1));
else return sum;
}
int suma () { //suma totala
int sum=0;
for (int j=0;j<M;j++)
sum+=s_col(j);
return sum;
}
void citire() {
fin>>N>>M;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
fin>>v[i][j];
}
//void afis() {for (int i=0;i<N+M;i++) cout<<w[i]<<' '; cout<<endl;}
int main () {
citire();
smax=suma(); //suma initiala
for (int i=0;i<=N+M;i++) w[i]=-1;
while (k>=0)
{
if (k>=N) k--;
else if (w[k]<1)
{
w[k]++;
if (w[N-1]!=-1) {int s=suma(); if (s>smax) smax=s;}
k++;
}
else { w[k]=-1; k--; }
}
fout<<smax;
fin.close();
fout.close();
return 0;
}